初始化代码仓库
- git init
将本地修改内容提交到缓存区
- git add
git add <file>
将存储区内容推送到本地仓库
- git commit
git commit [file1] [file2] ... -m [message]
查看某个文件工作区与缓存区区别
- git diff
git diff <file>
# 查看工作区与版本库里面最新版本的区别
git diff HEAD -- XXX.txt
查看提交历史信息
- git log
# 方法一,会显示很多非必要信息
git log
# 方法二:简化log信息输出
git log --pretty=online
提交版本回滚
- git reset
# 参数介绍, reset中参数包括了 mixed和hard, hard慎用
# --mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
# --hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:
# 一、所有内容回滚到上一个版本
# 方式1:如果是上一个版本可以使用
git reset HEAD^
# 回退到上3个版本
git reset HEAD^3
# 方式2: 根据版本号 commit id 进行回滚,版本号只需要输入前几位即可
git reset 203a
# 二、某个文件回退到某个版本
git reset HEAD^ xxx.txt
查看命令历史
- git reflog
git reflog
撤销修改
- git checkout -- filename
# 将filename文件在工作区的修改全部撤销,
git checkout -- filename
# 情况一、如果没有使用git add,即自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
git checkout -- filenam
# 情况二:如果使用git add 添加了,但并未commit,即已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
git checkout -- filename
# 如果想同时撤销(unstage)缓存区的提交信息,重新放回工作区,使用reset 可以把暂存区的修改回退到工作区
git reset HEAD filename
# 在使用 git checkout,使文件与缓存区保持一致
git checkout -- filename
# 总之,就是让这个文件回到最近一次git commit或git add时的状态。
删除文件
# 删除本地文件
rm <file>
# 删除版本库中文件
git rm <file>
# 版本库中有文件,本地误伤,想恢复到最新版本
git checkout --<file>
本地库推送到远程库
git push -u origin master
删除远程库
# 查看远程库信息
git remote -v
# 删除远程库连接
git remote rm <branch_name>
远程库clone到本地
git clone git@XXXXXX
创建并切换分支
- git branch
# 创建分支
git branch newBranch
# 创建并切换到分支
git checkout newBranch
# 等价于
git checkout -b newBranch
# 或者
git switch -c <name>
# 查看分支信息
git branch
# 删除分支
git branch -d <name>
合并分支
- git merge
# 语法
git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
[-s <strategy>] [-X <strategy-option>] [-S[<keyid>]]
[--[no-]allow-unrelated-histories]
[--[no-]rerere-autoupdate] [-m <msg>] [<commit>…]
git merge --abort
git merge --continue
# 合并分支dev到当前分支中
git merge dev
- git rebase
# 合并后的分支更加清晰,但公司要求不同,可以使用merge更为稳妥
# 1 进入分支
git checkout dev
# 2 合并入主分支
git rebase main
查看当前仓库状态
- git status
# 查看上次提交后是否有其他修改
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README
new file: hello.php