分布式版本控制系统Git-----8.fst-forward与no fast foward

时间:2023-03-08 19:10:12

当前分支合并到另一分支时,如果没有分歧解决,就会直接移动文件指针。这个过程叫做fastforward。

举例来说,开发一直在master分支进行,但忽然有一个新的想法,于是新建了一个develop的分支,并在其上进行一系列提交,完成时,回到 master分支,此时,master分支在创建develop分支之后并未产生任何新的commit。此时的合并就叫fast forward。

分布式版本控制系统Git-----8.fst-forward与no fast foward

可以看出这是一次式的合并,且合并完之后的视图为扁平状,看不出develop分支开发的任何信息。

使用–no-ff进行合并

—no-ff (no fast foward),使得每一次的合并都创建一个新的commit记录。即使这个commit只是fast-foward,用来避免丢失信息。

分布式版本控制系统Git-----8.fst-forward与no fast foward

可以看出,使用no-ff后,会多生成一个commit 记录,并强制保留develop分支的开发记录(而fast-forward的话则是直接合并,看不出之前Branch的任何记录)。这对于以后代码进行分析特别有用。

而且使用—no-ff合并还有一个实际意义。举个例子说明:假如你的领导出差了,但是项目现在还在进行着,于是他让你继续接着写,但是领导回来之后发现你写的这些功能根本不是他想要的或者之后才发现有一个很大的bug导致要放弃这个功能,这样的话用这个就很方便了,也很直观,直接找到领导出差之前的提交历史恢复过去就OK了。很直观,很直接。

下面两张图分别是用fast-forward和—no-ff合并的截图,显然第二张很直观。

分布式版本控制系统Git-----8.fst-forward与no fast foward分布式版本控制系统Git-----8.fst-forward与no fast foward