簡體   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