2010-04-19 46 views
1

我有一個git倉庫有兩個分支,masteramazing_new_feature。後者的分支包含了一個令人驚歎的新功能。同事和我都在同一個存儲庫上工作,我們兩個都致力於這兩個分支。如何在多個步驟中重寫已發佈的git分支的歷史記錄?

現在關於令人驚歎的新功能的工作已經完成,並且在amazing_new_feature分支中累積了超過100次的提交。在將工作合併到主服務器之前,我想先清理那些提交(使用git rebase -i)。

我們面臨的問題是,一次改寫/重新排序所有100個提交是相當痛苦的。相反,我想要做的是:

  1. 重寫/合併/重新排序amazing_new_feature分支的第幾次提交,並把結果加入到含有「清理」歷史上的一個專用分支(比如, amazing_new_feature_ready_for_merge分支)。
  2. 將其餘的amazing_new_feature分支重新編入amazing_new_feature_ready_for_merge分支。
  3. 重複在1

我的想法是,在某些時候,一切從amazing_new_feature工作應在amazing_new_feature_ready_for_merge,然後我可以將後者合併爲master

這是一個明智的方法,還是有更好/更容易/更愚蠢的教練解決這個問題?我特別害怕上述算法的第二步,因爲它意味着重新定義已發佈的分支。 IIRC這是一件危險的事情。

回答

0

如何重寫發佈的git分支的歷史?

通常你不能,特別是如果那個分支已被廣泛分佈。
如果您只有兩位開發人員推/拉該分支,您可以同意修改該分支,然後其他開發人員可以重置他/她的本地分支以引用他/她剛剛拉出的遠程分支(如此處SO answer)。

在這種情況下(有限分佈),您在問題中描述的步驟是合理的。