查看当前代码状态: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