如何使用“ git-flow”保持干净的(重新设置的)历史记录?

时间:2018-07-24 11:01:05

标签: git git-merge redmine rebase git-flow

我通常更喜欢使用rebase,因为它具有清晰的历史记录(至少在master分支上)。

看看git-flow,看来需要来处理合并提交。由于所有合并提交(我通常会重新设置基准),而且由于与同一代码相关的多个合并提交(ui-feature1合并到ui-development,然后合并到{{1} },然后合并到development;即使没有master分支也是如此)。

重新设置基准将更干净/更美观,但是它将创建重复播放的提交,因此:

  • 了解从何处分支(由于分支分歧的风险)更加复杂
  • 需要进行额外的维护(某些分支将始终基于其中,而另一些分支则需要删除并重新创建)
  • 像Redmine这样的
  • 系统(其Issues / Tickets可以列出所有通过提交消息中的ui-development引用它们的相应存储库提交)将显示 source 在第一次refs #redmine-issue将问题提交到第一个源提交中时,重新基于提交。

有什么中间方法吗? 有什么办法可以很好地集成 git-flow ,但是仍然在提交的消息中引用Redmine问题?

ref如何与 git-flow 一起玩?是否还有其他有效的git工作流支持 rebase 而不是 merge ?可以在没有合并提交的情况下遵循 git-flow 吗?

1 个答案:

答案 0 :(得分:2)

您可以先将rebase个功能分支合并到developmaster到相应分支上,如下所示:

git checkout feature/my-super-feature
git rebase develop
git checkout develop
git merge feature/my-super-feature

因此,您的git-flow中的历史记录会更整洁,但是仍然有代价,因为任何rebase都是重写历史记录,在这种情况下,仅适用于最后一次提交。因此,您可以在干净的历史和丰富的信息之间找到平衡。我本人仅在功能分支上使用rebase,在一次提交中,最后一次提交对壁球修补程序是这样的:

git rebase -i --autosquash HEAD~2

另一个使用merge --squash合并功能分支的选项。这是最“干净”的方法,但是您会丢失所有提交的内容。有时它很有用。