git 常用指令

查看当前代码状态:git status
显示内容:
          changes to be commited       表示将要提交但是尚未提交的修改(已经add但是尚未commit),也就是在stage区域已经有了,但是还没有commit的内容

           changed but not updated       表示已经修改但是还没有添加到暂存区的内容(尚未add,当然尚未commit)
                         
查看文件改动 git diff

git diff    比较working directory和stage的差别

git diff --cached   比较stage和history的差别

git diff HEAD        直接比较working directory 和history的区别


文件重命名: git mv
         git mv helloworld.txt helloworld2.txt    //将helloworld.txt重命名为helloworld2.txt
                 
创建新分支:git branch test              //创建名为test的分支

切换分支:git checkout test             //切换到test分支工作, 与上面的命令经常一起使用

查看分支:git branch                      //查看前版本库(本地)的所有分支

合并分支:git checkout master        //切换到“要合并到”的分支,常见的就是test分支合并到master分支,所以先切换到master分支

              git merge test          //合并test分支到master分支

注意: 在合并分支的时候有时候会出现冲突(conflict)的情况,创建的情况是master分支和test分支对同一文件的同一处代码的内容不一样(例如:master分支在hello.cpp中第三行写入的是"hello", 而test分支在hello.cpp的第三行中写入的是“world”),这样使得git不知道如何是好,这时候就需要你手工修改代码了,我难道要记住master和test在同一位置的内容?当然不用了,git会在git merge的反馈信息中说明,代码在何部分存在冲突。

删除分支: git branch -d test          //删除test分支 

分支重命名:git branch -m test test2      //将test分支重命名为test2,这个命令不常用

查询git历史记录
查询所有的commit历史:git log
查询指定范围的commit历史: git log --since = "5 hours"                //查看最近5小时的commit历史记录

    git log --before = "5 hours" -2          //查看5小时之前最后2次的提交commit记录

      git log 18f822e..0bb3dfb                  //查看从18f822e(不包括18f822e)到0bb3dfb之间的提交记录

      git log 18f822e..HEAD                     //HEAD表示当前所在分支的最新版本,即HEAD指向当前所在分支的最后一次commit

      git log HEAD^^^                            //^表示父节点,HEAD^就表示HEAD的父节点,以此类推

      git log HEAD~3                               //~N 表示回溯N个节点,所以与上一个表述等价

 查看版本之间的差异:           git diff      //查看working dir和stage(index)之间差异

                           git diff  --cached          //查看stage(index)和History(当前分支版本库)之间的差异

                       git diff  HEAD              //查看working dir 和 History之间的差异

问责文件内容:                     git blame hello.cpp                        //查看所用向hello.cpp提交内容的人,方便问责到人,谁,什么时候,提交代号,提交内容,留言等都会显示

增补提交:                           git commic  -C HEAD -a --amend   //用head上次提交的留言(-C表示comments),将这次的提交追加到上一次提交上,不会创建新的提交代号

版本库同步:                                            git fetch              //取来(fetch)远程版本库到本地,但是并不与本地分支合并                           

                                                             git pull                //拖入(pull)远程版本库,与本地分支合并,相当于 git fetch + git merge 

推送本地代码到远程版本库:       git remote add origin https://github.com/registername/reponame.git   //为远程版本库reponame取别名origin

                  git push origin master     // 将本地master分支推入github上的origin
                                                             
   其他:
还有不是很常用的操作简单,如果用到这些命令,可以参看git doc或者本文参考文献中所列的内容,参考链接:github官方tutorial:https://help.github.com/

翻转提交:       git revert

复位:            git reset

分支变基:      git rebase

标签:            git tag

git子模块:     git submodule

导出版本库:   git archive

二分查找:      git bisect
原文地址:https://www.cnblogs.com/allyh/p/10679927.html