2017-05-29 35 views
6

在我的git的工作流程,我有一个feature分支合并为master。 但是,当我解决合并冲突时,有人已将新提交推送到featuremaster复制一个解决混帐合并到另外的合并

我然后生成一个新的合并提交,基于new featurenew master。然而90%的合并冲突仍然是一样的。 所以我的问题是。我可以从first merge保存我的进度,并将其应用于冲突阶段new merge

+--------+  +--------+    +------------+ 
|  |  |  |    |   | 
| init +------> | master +-----------> | new master | 
|  |  |  |    |   | 
+--------+  +--------+    +------------+ 
     |     |        | 
     |   +---------+   +-------------+ 
     |   |   |   |    | 
     +---------> | feature +----------> | new feature | 
        |   |   |    | 
        +---------+   +-------------+ 
        | |       || 
        | |       || 
        | |  +----------------+ ||  +-----------+ 
        | +----> |    | +--------->   | 
        |   | first merge | |   | new merge | 
        +----------->    | +--------->   | 
           +----------------+    +-----------+ 

回答

1

Git有一个叫做rerere的功能。它可以在这种情况下使用。 启用配置文件rerere,它只是工作。 我认为这是解决这个问题的正确方法。

https://git-scm.com/blog/2010/03/08/rerere.html

https://git-scm.com/docs/git-rerere

要使用此功能不启用提前,脚本https://github.com/git/git/blob/master/contrib/rerere-train.sh可以帮助你。

也许有一个简单的方法来做到这一点。 合并new featurefirst merge,然后将结果合并到new master

+0

我会看看git-rerere。我可以通过额外的合并来解决它,但我不想创建这么多的合并提交。 –

+0

rerere不会减少合并数量,它只会潜在地减少您需要手动处理的合并冲突数量。 –