我们前面章节就已经讲过"分支合并"了,但是这个另类合并又是什么梗?做事情前先了解背景......
在Git世界里有个叫Fast forward的国度,每次我们在Git世界"合并分支"时,不经意间总是要经过Fast forward国,这个国家的制度有点奇怪:我们在合并分支后,删除分支时,会丢掉分支的信息。如果我们不经过Fast forward国,那么Git就会在合并(merge)时生成一个新的commit,而且还能看到我们的旅行历史的记录(分支历史的分支信息)。
默认的情况我们会经过Fast forward国,但我们不想从它那里经过时怎么办?我们使用 --no-ff的git merge方式。
我们先创建一个新的分支,叫weird1,并且创建weird.txt:
然后在master分支上,用--no-ff模式合并:
然后我们用
git log --graph --pretty=oneline --abbrev-commit
看看:
第一个就是 --no-ff合并(不经过Fast forward)时,自动创建的commitID,而后面跟着的就是"分支信息";
左边的几条线是"时间线",现在,它长成了你喜欢的模样?
当我们的leader需要我们开发出一个全新的功能时,我们创建了新的分支进行开发,但是突然leader说这个功能不需要了,也就是说明需要把这个分支彻底删掉。
但是由于我们尚未合并,所以删除的时候是会出错的,我们在weird1分支上测试:
新建文档hello.c
然后切换至master分支,不合并,且删除:
我们发现出错了,但它提示了个信息。我们试一试这个命令:
git branch -D weird1
然后,它就这样被消灭了.......
如果误删了怎么办?别忘了,我们的git有后悔药吃,我们直接那串commitID,即可恢复。
我们恢复了文件,却未恢复其分支。这一点值得注意了。。。
所以请勿随便使用-D。。。。