2011-02-17 38 views
3

我已經學習使用git我的[R編程,我已經來到了以下問題:如何保存「重複」rebase步驟?

大部分我需要寫分支的時間,相同的數據集可能會給出不同的分析,表格和圖表,像這樣的,我支到d D1和E.

A---B---C---D---E 
      \ 
      D1 

什麼是錯在B,我會檢出B,重新編碼,然後再重新提交它,說現在是B1

A---B---C---D---E 
    \  \ 
     B1  D1 

爲了使C,D,D1,E從頭開始米B1,類似下面,我需要做的rebase

A---B---B1---C---D---E 
        \ 
        D1 

git rebase B1 C 
git rebase C D 
git rebase D D1 
git rebase D E 

我覺得這是很愚蠢的話,是在git的一個較新批次,任何人都可以開導我,讓我不需要一直打到rebase?謝謝。

回答

1

我不知道它是否會在你的情況下工作,但保存和重新應用分辨率合併衝突通過git rerere完成。
(見rerere your boatFun with rerere

這意味着:你仍然有很多的合併做的,但其中大部分將被自動解決,通過記錄rerere先前的合併決議。

1

重新激活重寫歷史記錄。您通常會避免在共享存儲庫上。當一個公共項目在像B1這樣的「項目分支」中進行更改時,正常的方法是將其合併到主幹上,生成...---C---D---E---E+B1,然後只將項目分支D1重新綁定到新主幹上。如果D1更像是一個「釋放分支」,那麼你也可以在那裏合併B1來避免撿起不想要的E.然而,即使你正在重新綁定,你也只需要重新綁定每個分支到B1,不是每一個人修訂)

+0

你是說我只需要做`git rebase B1 D1`和`git rebase B1 E`? – lokheart 2011-02-17 12:15:37

+0

對,你不必自己「漣漪」改變。一個rebase會用`format-patch`輸出這兩個分支(例如D1,D,C)的所有非常見提交,然後用`am`將它們重新應用到你的目標B1。 – 2011-02-17 21:39:17

1

我沒有看到墊底點,只需添加對主分支的頂端的修正,然後摘櫻桃成D.

A---B---C---D---E 
      \ 
      D1 

A---B---C---D---E---B1 
      \ 
      D1 

A---B---C---D---E---B1 
      \ 
      D1--B1 

它將保留歷史也如Ben指出,如果很多人在同一個回購工作,這一點很重要。