常用 Git 操作

Git Commands

Create Tracking Branches

$ git checkout --track origin/serverfix

使用和远程版本库不同的分支名:

$ git checkout sf origin/serverfix

unstage (reset stage to HEAD)

撤销向 index 添加的某个文件的修改:

$ git reset -- <filename>

或:

$ git reset HEAD <filename>

撤销向 index 添加的某个文件和文件夹: - 新文件(夹)而不是修改(不想加入版本管理,但误添加到暂存区) - 不再将此文件(夹)放到版本库(比如:自动生成的文件,但已经误提交到版本库)

$ git rm --cached <filename>
$ git rm --cached -r <dirname>

撤销向 index 添加的所有修改:

$ git reset [HEAD]

discard changes in working directory (reset working directory to stage)

撤销工作目录中某个文件相对 index 的修改:

$ git checkout -- <filename>

撤销工作目录相对 index 的所有修改:

$ git checkout [--] .

删除工作目录中的新文件:

$ rm <filename>

清除工作目录中所有 Git 未追踪的文件:

$ git clean -f

执行此命令前可以用 dry-run 来确认一下:

$ git clean -n

discard change both in stage and working directory

$ git checkout HEAD -- <filename>
$ git reset --hard HEAD
$ git rm <filename> # discard new <filename>

update all tracked files (add modified, deleted)

$ git add -u

list all remote branches

$ git branch -r

list files in index

$ git ls-files -s

show file content at deferent stage

显示共同祖先版本内容:

$ git show :1:filename

显示目标分支版本(通常为当前分支)内容(ours):

$ git show :2:filename

显示被 merge 分支版本内容(theirs):

$ git show :3:filename

Git Tools

Git Completion on Mac OS X

  • If Git is installed by HomeBrew: Add the following lines to ~/.bash_profile
if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
    . `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi