创建(Create)

  • $ git clone git@github.com:jayself/jayselfsite.gitgit clone https://github.com/jayself/jayselfsite.git

    从一个现有的版本库克隆一份

  • $ git init

    把当前目录创建为一个本地版本库

本地修改(Local changes)

  • $ git add <file>

    把指定的 <file> 加入到暂存区

  • $ git add .

    把当前目录内的所有文件加入到暂存区

  • $ git commit -m "描述信息"

    将暂存区中的文件提交到本地版本库

  • $ git commit --amend

    在出来的编辑界面修改最后一次提交的描述信息

  • $ git status

    用来查看版本库的当前状态

  • $ git diff

    用来查看本次修改了哪些内容

提交历史(Commit History)

  • $ git log

    显示所有提交的日志信息(包括作者、日期、描述信息以及id)

  • $ git log -p <file>

    显示指定文件所有的日志信息

  • $ git blame <file>

    显示谁在什么时候修改过 <file> 文件,以及修改后提交的描述信息

版本分支与标签(Branches & Tags)

  • $ git branch

    显示当前的所有分支

  • $ git checkout <branch>

    迁出 <branch> 分支,默认为分支的 HEAD 版本

  • $ git branch <new-branch>

    创建一个基于当前 HEAD 版本的新分支

  • $ git branch --track <new branch> <remote-branch>

    创建一个基于 <remote-branch> 的新分支

  • $ git branch -d <branch>

    删除指定的分支

  • $ git tag <tag-name>

    创建一个标签

更新和推送(Update & Publish)

  • $ git remote -v

    显示所有的远程版本库

  • $ git remote show <remote>

    显示指定的远程版本库的相关信息

  • $ git remote add <remote> <url>

    添加一个远程版本库,<remote>是自定义的远程版本库的名称

  • $ git fetch <remote>

    获取远程版本库到本地(这时候在本地并不会显示)

  • $ git pull <remote> <branch>

    获取最新远程版本库并merge到本地

  • $ git push <remote> <branch>

    发布本地变更到远程版本库

  • $ git push <remote> :<branch>

    发布本地变更到远程版本库的指定分支上

  • $ git push --tags

    发布本地标签到远程版本库

合并&重新定义(Merge & Rebase)

  • $ git merge <branch>

    把一个分支或某个commit的修改合并到现在的分支上

  • $ git rebase <branch>

    变更当前 HEAD<branch>

  • $ git rebase --abort

    回到 rebase 执行之前的状态

  • $ git rebase --continue

    解决冲突之后,继续执行 rebase

  • $ git mergetool

    用配置的合并工具来解决冲突

  • $ git add <resolved-file>

    手动编辑解决冲突并在解决冲突之后标记保存文件

  • $ git rm <resolved-file>

    删除标记保存的文件

撤销(Undo)

  • $ git reset --hard HEAD

    在工作目录中丢弃所有本地修改

  • $ git checkout HEAD <file>

    丢弃指定文件的本地修改

  • $ git revert <commit>

    撤销一个提交(撤销会产生一个新的提交)

  • $ git reset --hard <commit>

    回退到一个之前的提交,并丢弃之后的所有修改

  • $ git reset <commit>

    回退到一个之前的提交,并撤销暂存区的修改(即重新放回工作区)

  • $ git reset --keep <commit>

    回退到一个之前的提交,并保留未提交的本地修改