命令
命令
  创建
    初始化
      init
        # 通过 SSH 复制一个已创建的仓库
$ git clone ssh://user@domain.com/repo.git
    克隆
      clone
        $ git clone ssh://user@domain.com/repo.git
        # 通过 HTTP 复制一个已创建的仓库
$ git clone http://domain.com/user/repo.git
  添加修改
    添加到暂存区
      add
        # 添加名为 xxx 的文件到暂存区
$ git add xxx
        # 添加当前目录所有修改内容到暂存区
$ git add .
        # 添加所有修改内容到暂存区
$ git add -A
    提交到本地仓库
      commit
        # 提交之前已标记的变化
$ git commit
        # 附加消息提交
$ git commit -m 'message here'
        # 提交本地的所有修改
$ git commit -a
    添加草稿
      stash
        # 1. 将修改作为当前分支的草稿保存
$ git stash
        # 2. 查看草稿列表
$ git stash list
stash@{0}: WIP on master: 6fae349 :memo: Writing docs.
        # 3.1 删除草稿
$ git stash drop stash@{0}
# 3.2 读取草稿
$ git stash apply stash@{0}
  撤销修改
    本地撤销修改
      # 删除添加.gitignore文件前错误提交的文件
$ git rm -r --cached .
$ git add .
$ git commit -m "remove xyz file"
      checkout
        # 放弃某个文件的所有本地修改
$ git checkout HEAD <file>
      reset
        # 移除缓存区的所有文件（i.e. 撤销上次git add）
$ git reset HEAD
        # 将HEAD重置到上一次提交的版本，并将之后的修改标记为未添加到缓存区的修改
$ git reset <commit>
        # 将HEAD重置到上一次提交的版本，并保留未提交的本地修改
$ git reset --keep <commit>
        # 放弃工作目录下的所有修改
$ git reset --hard HEAD
        # 将HEAD重置到指定的版本，并抛弃该版本之后的所有修改
$ git reset --hard <commit-hash>
        # 用远端分支强制覆盖本地分支
$ git reset --hard <remote/branch> e.g., upstream/master, origin/my-feature
    远程撤销修改
      revert
        # 创建一个新的提交，并回滚到指定版本
$ git revert <commit-hash>
      reset
        # 执行下面命令后，commit-hash 提交后的记录都会被彻底删除，使用需谨慎
$ git reset --hard <commit-hash>
$ git push -f
  同步
    更新
      fetch
        # 下载远程端版本，但不合并到HEAD中
$ git fetch <remote>
      pull
        # 将远程端版本合并到本地版本中
$ git pull origin master
        # 以rebase方式将远端分支与本地合并
$ git pull --rebase <remote> <branch>
    推送
      push
        # 将本地版本推送到远程端
$ git push remote <remote> <branch>
        # 删除远程端分支
$ git push <remote> :<branch> (since Git v1.5.0)
$ git push <remote> --delete <branch> (since Git v1.7.0)
        # 发布标签
$ git push --tags
  查看信息
    修改状态
      status
        # 显示工作路径下已修改的文件
$ git status
    比对差异
      diff
        # 显示与上次提交版本文件的不同
$ git diff
    历史记录
      log
        # 从最新提交开始，显示所有的提交记录（显示hash， 作者信息，提交的标题和时间）
$ git log
        # 显示某个用户的所有提交
$ git log --author="username"
        # 显示某个文件的所有修改
$ git log -p <file>
  分支标签
    分支
      branch
        # 列出所有的分支
$ git branch
        # 列出所有的远端分支
$ git branch -r
        # 基于当前分支创建新分支
$ git branch <new-branch>
        # 基于远程分支创建新的可追溯的分支
$ git branch --track <new-branch> <remote-branch>
        # 删除本地分支
$ git branch -d <branch>
        # 强制删除本地分支，将会丢失未合并的修改
$ git branch -D <branch>
      checkout
        # 切换分支
$ git checkout <branch>
        # 创建并切换到新分支
$ git checkout -b <branch>
    标签
      tag
        # 给当前版本打标签
$ git tag <tag-name>
        # 给当前版本打标签并附加消息
$ git tag -a <tag-name>
  合并重置
    合并
      merge
        # 将分支合并到当前HEAD中
$ git merge <branch>
    重置
      rebase
        # 将当前HEAD版本重置到分支中，请勿重置已发布的提交
$ git rebase <branch>
  cmd 概览图
    子主题 1