如何保存“重复”的rebase步骤?

时间:2011-02-17 09:37:49

标签: git

我已经学会使用git进行R编程,我遇到了以下问题:

大多数时候我需要编写分支,因为相同的数据集可能会提供不同的分析,表格和图表,就像这一样,我将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吗?

3 个答案:

答案 0 :(得分:1)

我不知道它是否会在您的情况下正常工作,但保存和重新应用解决方案合并冲突是通过 git rerere 完成的。
(请参阅rerere your boatFun with rerere

这意味着:您仍然需要进行大量合并,但大多数合并将通过以rerere记录的先前合并解决方案自动解析。

答案 1 :(得分:1)

重新定位会重写历史记录。您通常会在共享存储库中避免这种情况。当一个公共项目在像B1这样的“项目分支”中进行更改时,将其向前滚动的正常方法是将其合并到主干上,生成...---C---D---E---E+B1,然后您只需将项目分支D1重新绑定到您的新的行李箱。如果D1更像是一个“发布分支”,那么你也会在那里合并B1以避免拾取不需要的E。

(作为旁注,即使您正在变基础,您只需要将每个分支重新定义到B1,而不是每个单独的修订)

答案 2 :(得分:1)

我没有看到重新定位的重点,只需在主分支上添加修复,然后将其挑选到D中。

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

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

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

它也将保留历史记录,正如Ben指出的那样,如果许多人在同一个回购单上工作,这一点很重要。