Git常用命令速查表

2017/12/07

创建版本库

git clone <url>                  #克隆远程版本库
git init                         #初始化本地版本库

修改和提交

git status                       #查看状态
git diff                         #查看变更内容
git add .                        #跟踪所有改动过的文件
git add <file>                   #跟踪指定的文件
git mv <old><new>                #文件改名
git rm <file>                    #删除文件
git rm --cached<file>            #停止跟踪文件但不删除
git commit -m "commit messages"  #提交所有更新过的文件
git commit --amend               #修改最后一次改动

查看提交历史

git log                    #查看提交历史
  git log --oneline --number # 每条log只显示一行,显示number条.
  git log --oneline --graph # 可以图形化地表示出分支合并历史.
  git log branchname # 可以显示特定分支的log.
  git log --oneline branch1 ^branch2 # 可以查看在分支1,却不在分支2中的提交.^表示排除这个分支(Window下可能要给^branch2加上引号).
  git log --decorate # 会显示出tag信息.
  git log --author=[author name] # 可以指定作者的提交历史.
  git log --since --before --until --after # 根据提交时间筛选log.
  --no-merges # 可以将merge的commits排除在外.
  git log --grep # 根据commit信息过滤log # git log --grep=keywords
  # 默认情况下, git log --grep --author # 是OR的关系,即满足一条即被返回,如果你想让它们是AND的关系,可以加上--all-match的option.
  git log -S #  filter by introduced diff.
  # 比如 # git log -SmethodName (注意S和后面的词之间没有等号分隔).
  git log -p #  show patch introduced at each commit.
  # 每一个提交都是一个快照(snapshot),Git会把每次提交的diff计算出来,作为一个patch显示给你看.
  # 另一种方法是git show [SHA].
  git log --stat #  show diffstat of changes introduced at each commit.
  # 同样是用来看改动的相对信息的,--stat比-p的输出更简单一些.
  git log -p <file>          #查看指定文件的提交历史
git blame <file>           #以列表方式查看指定文件的提交历史

撤销

git reset --hard HEAD      #撤销工作目录中所有未提交文件的修改内容
git checkout HEAD <file>   #撤销指定的未提交文件的修改内容
git revert <commit>        #撤销指定的提交
git log --before="1 days"  #退回到之前1天的版本

分支与标签

git branch                   #显示所有本地分支
git checkout <branch/tag>    #切换到指定分支和标签
git branch <new-branch>      #创建新分支
git branch -d <branch>       #删除本地分支
git tag                      #列出所有本地标签
git tag <tagname>            #基于最新提交创建标签
git tag -d <tagname>         #删除标签

合并与衍合

git merge <branch>        #合并指定分支到当前分支
git rebase <branch>       #衍合指定分支到当前分支

远程操作

git remote -v                   #查看远程版本库信息
git remote show <remote>        #查看指定远程版本库信息
git remote add <remote> <url>   #添加远程版本库
git remote rm origin            #删除远程版本库
git fetch <remote>              #从远程库获取代码
git pull <remote> <branch>      #下载代码及快速合并
git push <remote> <branch>      #上传代码及快速合并
git push <remote> :<branch/tag-name>  #删除远程分支或标签
git push --tags                       #上传所有标签

目录