续上一篇Git 进门,本文介绍一下Git的另外一些相关知识。
git stash
假如你在当前分支做了修改,突然想切换到另一个分支上去做事,你可以选择手动去吧所有修改的文件备份到另外一个目录底下之后再做切换分支动作,但是,你不会觉得这有点麻烦吗?
现在git stash
这个命令就是用来解决这件事的,你在git status
之后看到有修改的文件,你可以用git stash
来将当前所有修改保存到暂存区中,然后再git status
你会发现当前分支已经干净了,可以切换到其他分支了。
git stash list
查看记录,当再次切回来的时候要恢复,可以用git stash pop
,你也可以用git stash apply (stash id)
,两个的区别是,前者有将记录删除,后者没有。使用后者,要删除记录,需要用git stash drop (stash id)
有一条命令直接清空整个暂存区的:git stash clear
merge冲突问题
当merge出现冲突的时候,git status
一下会有提示是哪个文件出现冲突,用git diff
查看。
++<<<<<<< HEAD
++.....
=======
++.....
++>>>>>>> another branch
Git用<<<<<<<,=======,>>>>>>>
标记出不同分支的内容,解决冲突需要手动去修改这些内容。直接用文本编辑的方式可能有点慢,还有可能出错,这里介绍一个对比工具,个人用的还挺不错的——Beyond Compare. 你可以将要被合入分支的该文件先copy出来,然后和主分支的该文件对比,直接将不同对比过去,这样出现差错的情况会少很多。
git revert
git revert (commit id)
该命令用来回退提交,若有提交已经合入分支,发现合入的提交有问题,可以
用该命令来回退掉提交,这个命令和git reset
有点不同,git revert
其实是另一条提交,而reset是将内容回复到指定的某条提交上。
git format-patch
git format-patch (commit id)
该命令将在本条commit后的所有commit每条分别打包出来(不包括本条)。
git am
该命令用来合入patch,在使用git am (file)
之前, 你要首先git am --abort
一次,来放弃掉以前的am信息,这样才可以进行一次全新的am。
合入patch有时候会导致有冲突,解决冲突的方法还是和上面的一致。
题外话:在GitHub上删除Repository,路径是进入项目->Settings->Danger Zone(最后的危险空间,这命名有点道理)->Delete this repository,最后再一次确认输入你该仓库的名称,确定就搞定了。
这里给个建议,要是遇到一个好项目,你自己有没有时间去研究它,最好是加stars就好,不要fork。当然,这个只是个人建议。