git命令汇总

 =====================================================================    diff    =====================================================================

git diff --check                        检查多余空白

git diff --cache --check           检查多余空白

 =====================================================================    log    =====================================================================

git log --no-merges         不显示merge的log

git log --no-merges branch1...branch2     显示在branch2但不在branch1中的提交信息

$ git log --abbrev-commit --pretty=oneline             显示SHA-1号简短唯一
ca82a6d changed the version number
085bb3b removed unnecessary test code
a11bef0 first commit

git log --oneline --decorate --graph --all            like gitk --all

$ git log -g master                            查看类似于 git log 输出格式的引用日志信息
commit 734713bc047d87bf7eac9674765ae793478c50d3
Reflog: master@{0} (Scott Chacon <schacon@gmail.com>)
Reflog message: commit: fixed refs handling, added gc auto, updated
Author: Scott Chacon <schacon@gmail.com>
Date:   Fri Jan 2 18:32:33 2009 -0800

    fixed refs handling, added gc auto, updated tests

git log master..experiment                             查看在experiment分支中的提交,且该提交不在master分支中

git log origin/master..HEAD                           查看当前分支中不在远程中的提交。   在..的两边中,如果有一边为空,则默认为HEAD

$ git log refA..refB                        三条命令等价
$ git log ^refA refB
$ git log refB --not refA
$ git log refA refB ^refC
$ git log refA refB --not refC      所有被 refA 或 refB 包含的但是不被 refC 包含的提交

git log master...experiment                            查看两个分支中非共同的提交-->等价于执行git log master..experiment的结果加上再执行git log experiment..master的结果

git log --left-right master...experiment            同上,但显示出提交属于哪个分支

git show --name-only 3c0d42bd33f9bd1da50e858d6a7f52f6b35707b6                  显示这次commit影响的文件名

 ======================================================================    reflog    ====================================================================

$ git reflog       引用日志只存在于本地仓库,一个记录你在你自己的仓库里做过什么的日志。 其他人拷贝的仓库里的引用日志不会和你的相同;而你新克隆一个仓库的时候,引用日志是空的,因为你在仓库里还没有操作。
734713b HEAD@{0}: commit: fixed refs handling, added gc auto, updated
d921970 HEAD@{1}: merge phedders/rdocs: Merge made by recursive.

 ======================================================================    show    ====================================================================

$ git show HEAD@{5}


$ git show master@{yesterday}           显示昨天该分支的顶端指向了哪个提交。 这个方法只对还在你引用日志里的数据有用

$ git show HEAD@{2.months.ago}
$ git show d921970^

$ git show d921970^2                          第二父提交
$ git show HEAD~3                             第三父提交
$ git show HEAD^^^

 ====================================================================    rev-parse   ======================================================================

$ git rev-parse topic1              查看分支的SHA-1值
ca82a6dff817ec66f44342007202690a93763949

 ====================================================================    branch    ======================================================================

$ git branch        本地branch
* master

$ git branch -r     远程branch
  origin/master

$ git branch -a     所有branch
* master
  remotes/origin/master
$ git branch -v
* master a00daa0 [ahead 2] add servlet-api.jar in libs

$ git branch -vv        显示跟踪关系
* master a00daa0 [origin/master: ahead 2] add servlet-api.jar in libs

git branch --ser-upstream [local branch] [remote branch]

 =================================================================    add    =========================================================================

git add -i                                交互式暂存

git add -p                               暂存部分补丁,等价于 git add --patch

=================================================================    stash   ==========================================================================

   

git stash     or    git stash save

git stash list

git stash apply     ==>    git stash apply stash@{0}

git stash apply stash@{1}

git stash apply --index              如果在stash之前有staged,使用改命令后仍是staged,否则是changed且未在staged中

git stash pop        ==>    git stash apply stash@{0}    +   git stash drop stash@{0}

git stash pop --index

git stash drop       ==>    git stash drop stash@{0}

git stash drop stash@{1}

git stash --keep-index               只储存staged的

git stash -u    or    git stash --include-untracked        也储存未跟踪的文件

git stash --patch       只储存某一部分

git stash branch [new branch]    ==>   git checkout -b [new branch]   +   git stash pop

git stash --all            移除未被追踪的文件, 并存放在栈中

================================================================    clean    ==========================================================================

git clean          移除未跟踪的文件

git clean -d      移除未跟踪的目录,包括该目录中的文件

git clean -f       强制移除

git clean -n      -n用来做一次演习然后告诉你 将要 移除什么

git clean -i       交互模式

git clean -x      git clean 命令只会移除没有忽略的未跟踪文件,任何与 .gitiignore 或其他忽略文件中的模式匹配的文件都不会被移除。 如果你也想要移除那些文件,可以给 clean 命令增加一个 -x 选项

===============================================================    checkout    ==========================================================================

git checkout --conflict=merge [conflict file]             回到[conflict file]未解决冲突时的状态

git checkout -b [new branch] [old branch]

================================================================    revert    ==========================================================================

git revert -m 1 HEAD                      -m 选择返回到哪个分支的状态,1表示merge时的当前分支,2表示要merge的分支。revert表示弃用未选中分支(当前命令表示选中了1,未选中2)的内容。

git revert [SAH-1]                            为了在重新合并中不弃用未选中分支内容,需要再次翻转

================================================================    blame    ==========================================================================

git blame [file]                                 标注文件,查看这个文件每一行的最后修改时间以及修改作者

git blame -L 5,15 [file]                     -L 用于限制查看哪些行

git blame -C -L 5,15 [file]                -C 用于查看各行的原始出处

================================================================    bisect    ==========================================================================

$ git bisect start
$ git bisect bad
$ git bisect good [good version]
...
$ git bisect reset


$ git bisect start [bad version] [good version]

================================================================    bare   ==========================================================================

git init --bare

git clone --bare [a repo] [a remote repo you want to create(named .git at the end)] 

================================================================    remote   ==========================================================================

git remote add [remote-ref-new-name] [url]

git remote -v

git remote show [remote-ref-name]

git remote rename [old name] [new name]

git remote rm [remote-ref-name]

================================================================    submodule   ==========================================================================

git submodule add [url] 

git submodule add [url] [remote-ref-new-name] 

$ git clone [url]                         clone含有子模块的远程库
$ git submodule init
$ git submodule update


$ git clone --recursive [url]             等价于以上三条命令

================================================================    clone   ==========================================================================

git clone [url]

git clone [url] [local dir name]

git clone -o [alternative name for origin] [url]

原文地址:https://www.cnblogs.com/drizzlewithwind/p/5039841.html