停止cherry-picking,开始合并,第6部分:替换临时修复

81 阅读1分钟

停止cherry-picking,开始合并,第6部分:替换临时修复

原文作者:Raymond Chen,发布于2018年3月19日

在上一篇文章中,我们看到了如何利用三向合并算法来处理cherry-pick之间的冲突。但是,有时候我们可能会遇到这样的情况:我们在master分支上做了一个临时修复,然后想要用feature分支上的永久修复来替换它。

在这种情况下,我们可以使用git revert来撤销临时修复,然后使用git merge来合并永久修复。让我们看看这是如何工作的。

假设你有以下提交历史:

%%{init: { 'gitGraph': {'showBranches': true, 'showCommitLabel':true, 'mainBranchName': 'master'}} }%%
gitGraph
   commit id: "A"
   branch feature
   checkout feature
   commit id: "F1"
   commit id: "F2"
   commit id: "F3"
   checkout master
   commit id: "M1"
   commit id: "M2"
   commit id: "M3"

其中M2是一个临时修复,F3是一个永久修复。首先,我们使用git revert M2来撤销临时修复。这会创建一个新的提交M4,它撤销了M2的更改。

%%{init: { 'gitGraph': {'showBranches': true, 'showCommitLabel':true, 'mainBranchName': 'master'}} }%%
gitGraph
   commit id: "A"
   branch feature
   checkout feature
   commit id: "F1"
   commit id: "F2"
   commit id: "F3"
   checkout master
   commit id: "M1"
   commit id: "M2"
   commit id: "M3"
   commit id: "M4"

然后,我们使用git merge feature来合并永久修复。由于M4已经撤销了M2的更改,所以合并不会产生冲突,git会直接采用F3的更改。

这样,我们就成功地用永久修复替换了临时修复,而且没有产生任何冲突。这种方法适用于任何需要替换临时修复的情况。

导航