我在linux上使用gitflow
当我完成一个hotfix分支时,我的vi编辑器打开,我可以写一个合并消息。合并消息现在在提交历史记录中。
但是当我完成特性分支时,没有vi编辑器打开,我不能写合并消息。因此,在提交历史中没有任何跟踪。
这是烦人的。有人能给我解释一下吗?是配置问题吗?
创建一个特性分支:git flow feature start feature_branch
.
完成一个特性分支:git flow feature finish feature_branch
。按文档整理类似:git checkout develop
git merge feature_branch
虽然我已经使用Git Flow分支策略多年了,但我承认我以前从未使用过git flow
命令,但我刚刚测试了它们,可以确认您所看到的内容,尽管需要进行一些澄清。
据我所知,您从未被提示为任何合并提交写提交消息。然而,当您完成hotfix
或release
分支时,提示您写入标记消息,它恰好也包含在合并提交消息的详细信息中(在提交标题下面),所以看起来像是您正在编写合并提交消息。因为只有发布版和热修复被标记,这就是为什么当你完成特性分支时不会提示你使用编辑器的原因。
关于--no-ff
合并,有以下规则:
- 当完成释放修正补丁或分支,合并总是使用
--no-ff
标志执行。 - 完成功能时如果分支有2个或更多的新提交,则合并将使用
--no-ff
标志执行。 - 完成功能时分支只有一个新的提交,合并是执行
--ff
标志(这也是默认的合并)。
注意,在第三条规则中使用-ff
意味着它会在可能的情况下做一个快进,这意味着有时会避免合并提交,这很有趣,因为我知道Git Flow文档中没有任何地方建议这样做。这确实是有意义的,因为当你只有一个提交要合并时,强制合并提交没有信息增益。它仍然忠于develop
分支的--first-parent
视图,显示所有已完成的特性分支。
注:当我个人使用Git Flow时,我总是强制合并提交,即使是单个提交合并,因为我在自定义的合并提交消息中添加了额外的PR信息。这是我不使用git flow
命令的原因之一。(此外,我们的配置管理工具处理已完成的Pull Requests的合并,所以没有人会"完成";自己的东西。)