【问题标题】:How do I clean up my git branches to have a clean history going forward?如何清理我的 git 分支以保持干净的历史记录?
【发布时间】:2020-08-04 17:36:07
【问题描述】:

我正在从事具有以下分支的项目:

  • 阿尔法
  • 测试版
  • 产品

所有更改都通过 PR 提交到 alpha,然后在发布前合并到 betaprod

我面临的问题是从 alphabetabetaprod 的合并已经通过相同的公关流程完成,这造成了非常混乱的历史。

所以当我们在合并alphabeta的时候,比如我们基于beta创建一个特征分支,合并alpha 到该分支上,然后提交 PR 以将该功能分支合并到 beta

相反,当从一个分支合并到另一个分支时,我希望尽可能使用快进进行直接提交。这将有助于保持更清晰的历史记录并在不同的分支中查找提交。

在我开始这个新流程之前,“重新对齐”我的分支的最佳方法是什么。

我在想我需要从 prodbeta 再到 betaalpha 的完整合并> 我认为这将使我能够从 alphabeta 然后从 betaprod 进行干净的合并和历史记录往前走。会这样吗?

P.S.:我不想强制推送来重写现有分支上的历史记录。我希望这可以“修复”。

如果我们只关注 alphabetaprod,这就是我们的历史:

【问题讨论】:

  • “例如,当我们将 alpha 合并到 beta 时,我们会创建一个基于 beta 的功能分支” 是的,这听起来是错误的。要将 alpha 合并到 beta,您应该合并它。如果您只是遵循基本规则,即特征来自 alpha 并合并到 alpha,alpha 仅合并到 beta,beta 仅合并到 prod,那么您的历史记录将是干净的;这就是我们所做的。部分问题似乎是有人违反了您刚刚阐明的规则;那条从测试版出来并合并回测试版的蓝色轨道是错误的。如果人们不遵守规则,规则就毫无意义。
  • 我看不出这条评论有什么帮助。我已经承认我们做错了,问题是试图纠正它。我不需要关于遵守规则的讲座
  • 抱歉,目前还不清楚您还想要什么。在评论中,您说您可以接受过去的历史是肮脏的,如果您只是遵循您已经阐明的规则,那么未来的历史将是干净的,正如我在之前的评论中所说,所以不清楚什么问题是。
  • 我刚刚解释了我正在考虑做的事情,我在问这是否有助于保持清白的历史。这也是暗示的,但我应该明确表示,如果我正在考虑的方法不是最好的,我希望得到建议。您刚刚确认我的方法应该有效,以便回答我的问题。谢谢

标签: git merge git-merge


【解决方案1】:

您可以切换到 fetch 和 rebase 方法,例如不是将 beta 合并到 alpha 中,而是从 beta 中获取最新版本并将 alpha 提交重新设置在顶部。在历史记录中,所有 alpha 提交都将在 beta 提交之后进行。将 alpha 合并回 beta 将是快进。然后删除 alpha 并从 beta 中分支一个新的 alpha 以继续进行 alpha 开发...

【讨论】:

  • 我必须用这种方法强制推动测试版,不是吗?我想避免强制推动。我也可以接受过去的历史是肮脏的,只要我能恢复并且有干净的历史前进
  • 不需要强制推动。但是你必须解决在变基期间发生的任何冲突......
【解决方案2】:

使用三个 Git 分支,您可以发出四个 rebase 命令以使它们全部同步。

git rebase prod alpha
git rebase alpha beta
git rebase beta prod
git rebase prod alpha

如果你真的想清理并且提交历史并不重要,那么在这样做之前,将每个分支上的所有提交压缩为一个。

git rebase -i HEAD~<# of commits on the branch>

您将获得与以下分支图相同的结果,三个存储库中每个存储库的所有提示中的所有文件都放在 A' 上

如果你真的想鼓起勇气,你可以进一步压缩提交,让分支操作看起来好像从一开始就没有发生过。

git rebase -i HEAD~<# of commits to squash>

在具有三个分支的类似Git clean up 情况下,我将整个 repo 缩减为两个提交。

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 2013-02-18
    • 2018-12-31
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2021-02-07
    • 1970-01-01
    相关资源
    最近更新 更多