本文适合作为快速参考手册使用。想进一步了解git的同学,请到ProGit中文版下载《Pro Git》手册进行学习。Cherish作为一个菜鸟程序员,在刚开始接触git的时候,虽然仔细阅读了《Pro Git》的第一、二章,但是基本了解了git的使用过程。但是在实际使用中,经常会因为记不住各种常用的git命令而感到畏惧。错误的git命令让工作变得一团糟,因为各种git命令我都不记得了,使用的时候经常要临时翻看手册。历尽千辛万苦,下定决心对常用的git技巧做一个简明扼要的总结下面是我结合参考资料和日常使用总结的31个git实用技巧。随着工作中使用场景的丰富,新的技能会不断增加,不断丰富和完善。一、基本操作1、如何新建仓库?1.1.将本地没有进行版本控制的目录转换成Git仓库,进入项目的目录;$cd/c/user/my_project执行gitinit;$gitinit使用gitadd来跟踪现有的项目文件;$gitadd*.c使用gitcommit进行初始提交;$gitcommit-m'initialprojectversion'//提交时添加注释现在,您已经拥有一个包含跟踪文件和初始提交的Git存储库。1.2从其他服务器克隆一个已经存在的Git仓库克隆命令:gitclone$gitclonehttps://github.com/libgit2/libgit2克隆远程仓库时如果想自定义本地仓库的名称,可以使用附加参数指定新目录名称:$gitclonehttps://github.com/libgit2/libgit2myNameGit支持多种数据传输协议。上面的例子使用了https://协议,但是你也可以使用git://协议或者使用SSH传输协议,比如user@server:path/to/repo.git。2、如何查看当前项目中文件的状态?你可以使用gitstatus命令来查看哪些文件处于什么状态(状态信息更详细)$gitstatusOnbranchmaster你的分支是最新的'origin/master'。nothingtocommit,workingdirectoryclean使用gitstatus-s命令或者gitstatus--short命令(状态信息比较简洁)$gitstatus-s最具体的查看方式:gitdiff,可以具体更改文本内容$gitdiff3.如何跟踪新添加的文件?gitaddfilename$gitaddxxxfile4.如何暂存修改过的文件?或者gitaddfilename命令,这是一个多功能命令$gitaddxxxfile5.如何忽略某些不需要纳入git管理的文件?创建一个.gitignore;$cat.gitignore在此文件中添加需要忽略的文件;*.[oa]//忽略所有以.o或.a结尾的文件*~//忽略所有以波浪号(~)结尾的文件.gitignore文件末尾的文件格式规范如下:?Git将忽略所有空行或以#开头的行。?您可以使用标准的glob模式匹配,它递归地应用于整个工作区。?匹配模式可以以(/)开头以防止递归。?匹配模式可以指定以(/)结尾的目录。?要忽略指定模式之外的文件或目录,您可以用感叹号(!)反转模式。查看已经暂存的内容,下次提交时会加入$gitdiff--staged6。如何提交更新使用gitstatus查看文件状态,看是否有没有暂存的文件;$gitstatus使用gitcommit提交更新$gitcommit可以在commit命令后加上-m选项将提交信息与命令放在同一行,无需打开编辑器编辑提交信息$gitcommit-m《Story182:Fixbenchmarksforspeed》文件改了,2个插入(+)createmode100644README>提交后,会告诉你当前提交的是哪个分支(master),这次提交的完整SHA-1校验和是多少(463dc4f),而在这次提交中,有修改了多少文件,增删了多少行>记得commit的时候记录了一个snapshot,放在stagingarea。任何未暂存的文件都保持修改状态,并且可以在下一次提交时包含在版本管理中。7、如何跳过暂存步骤,直接将所有跟踪修改的文件提交给带-a选项的gitcommit,Git会自动存储所有跟踪文件并一起提交,从而跳过git添加步骤$gitcommit-a-m'添加了新的基准测试'8.如何从版本管理中排除git版本管理中包含的文件要从Git中删除一个文件,必须将其从跟踪文件列表中删除,然后使用gitrm命令提交此工作并删除指定的工作目录中的文件。$gitrmPROJECTS.mdrm'PROJECTS.md'$gitstatusOnbranchmaster你的分支是最新的'origin/master'。要提交的更改:(使用“gitresetHEAD...”取消暂存)已删除:PROJECTS.md9。如何查看提交历史?gitlog命令$gitlogcommitca82a6dff817ec66f44342007202690a93763949作者:ScottChacon日期:2008年3月17日星期一21:52:11-0700更改了版本号10。如何撤销对文件的修改?如果不想保留文件的修改怎么办?您如何轻松撤消更改——将其恢复为上次提交的方式?gitcheckout--filename$gitcheckout--filename请记住gitcheckout--是一个危险的命令。您在本地对该文件所做的任何更改都将消失——Git将用最近的提交覆盖它。2.分行管理11.如何创建新的分行?使用gitbranch命令根据当前分支创建新分支$gitbranch分支名12、如何切换分支?使用gitcheckoutbranchname命令切换到一个已有的分支$gitcheckoutbranchname通常我们在创建一个新的分支后会立即切换到过去,这可以通过一个命令gitcheckout-b来完成;13.如何查看Branchfork历史?使用gitlog命令14.新建一个分支并切换到该分支$gitcheckout-bbranchA这条语句是下面两句的简写:$gitbranchbranchA$gitcheckoutbranchA15.合并目标分支(merge将目标分支合并到当前分支上)gitmergetargetbranch将目标分支合并到当前分支$gitcheckoutmaster//切到master$gitmergehotfix//将hotfix合并到master16.如何删除不需要的分支?使用gitbranch-d分支名$gitbranch-dhotfixDeletedbranchhotfix(3a0874c)17.合并分支时遇到冲突怎么办?现象:$gitmergeiss53Auto-mergingindex.htmlCONFLICT(content):Mergeconflictinindex.htmlAutomaticmergefailed;修复冲突然后提交结果。此时Git进行了合并,但并没有自动创建新的合并提交。Git会暂停,等待你解决合并冲突。任何包含等待解决的合并冲突的文件都将被标记为未合并。Git会为冲突文件添加标准的冲突解决标记,以便您可以打开冲突文件并手动解决冲突。<<<<<<联系方式:email.support@github.com