git merge请使用 `--no-ff`

三种模式

fast-forward
--squash
--no-ff

image

fast-forward

Git 合并两个分支时,如果顺着feature分支走下去可以到达main分支的话(main分支在feature分支开发期间没有新的提交),那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward)。

一旦删除分支或者分支指针往前走,很难体现该处提交是合并自某个分支的。

--squash

把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用–squash进行合并。

此时代码文件内容已经同合并后一样,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。这样就简化掉了中间开发过程中的很多杂乱的commit 信息。

--no-ff

关闭fast-forward模式,在提交的时候,会创建一个merge的commit信息,然后和master分支合并。

一般只要不是两个分支同时编辑了同一个文件的相同部分,就不会有冲突。所以这是能自动merge的模式,也是比较常用的模式。

结论

一般而言,我们在开发中都保存好每次commit信息,无论是主分支,功能分支,特性分支。
所以最常用的情况是携带--no-ff参数进行merge

如果提交的commit信息太多,希望简化commit信息,比如开发周期很紧没有详细记录commit信息,则使用--squash在merge时做一次总的commit信息汇总。

Reference

  1. 廖雪峰-分支管理策略
  2. git merge 的三种常用模式简介
posted @   光辉233  阅读(665)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示