繁体   English   中英

如何清理我的 git 分支以保持干净的历史记录?

[英]How do I clean up my git branches to have a clean history going forward?

我正在开发一个具有以下分支的项目:

  • α
  • 测试版
  • 产品

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

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

因此,当我们将alpha合并到beta时,例如,我们基于beta创建一个特性分支,将alpha合并到该分支上,然后提交 PR 将特性分支合并到beta中。

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

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

我在想我需要进行从prodbeta再到alpha的完全合并,我认为这将允许我从alphabeta从 betaprod进行干净的合并和历史记录。 会是这样吗?

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

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

在此处输入图像描述

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

使用三个 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 清理情况下,我将整个回购减少到两个提交。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM