重新打造具有干净历史的缝合功能分支

时间:2014-02-06 20:31:00

标签: git git-branch

我有这个

d0 -----
|       \
|        ------ f1  
d1              |   
|               |
|               |
d2------        f2
|       \       |
|        \      |
d3        \     |
|          --- merge
|               |
d4 ---          f3
      \         |
       \        |
        \       |
         ----- merge
                |
                |
                f4

不,真的。我实际上做了这样的回购。请注意,我必须修复d3和f3之间的合并冲突。

C:\dev\git-test> git tree
* 9a169c2 (HEAD, feature) f4
*   1396e5c fixed master -> feature merge conflict
|\
| * 7ececbd (MASTER) d4
| * a2be7eb d3
* | 8c11a80 f3
* |   caa9068 Merge branch 'master' into feature
|\ \
| |/
| * 576ac31 d2
| * fe78786 d1
* | 4e7ac84 f2
* | f3e13dc f1
|/
* 15a0d51 d0

我经常将master合并到feature,因为feature已共享,因此定期将feature重新定位到master将是一场噩梦。每位开发人员都拥有feature的私人副本,并将其重新定位到origin/feature。为了防止masterfeature发生分歧,我会定期在master拼接。 (如果有更好的方法,请告诉我。我无法辨别this post中1和3之间的区别。)

现在我想执行一些命令并导致这种情况发生:

d0
|
d1
|
d2
|
d3
|
d4
  \
  f1`
  |
  f2`
  |
  f3`
  |
  f4` <- master

这似乎很可能:

git checkout feature
git rebase master

问题是不会记住d3 / f3冲突的合并解决方案。我确实打开了rerere。我认为这样做的原因是在第一次合并中我们将d3播放到f3上,而在rebase中我们将f3播放到d3上。你是如何处理这个问题的?

0 个答案:

没有答案