2011-02-17 42 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指出,如果很多人在同一个回购工作,这一点很重要。