我有一个功能分支,我称之为“myfeature”,我一直在努力。客户希望我把它放在测试站点上,所以我将它合并到“staging”分支并推送到原点。从那以后,我在“staging”分支上做了几次提交。今天,客户决定他们不再需要“myfeature”了。
如何撤消我在几次提交之前做的合并?我还有“myfeature”分支。我基本上想要接受该分支中的所有更改并将它们从“staging”分支中拉出来并再次保存“newfeature”。
答案 0 :(得分:3)
您可以使用git revert
还原合并,但必须指定(通过-m
选项)要还原到的合并提交的父编号。假设你有这样的历史:
c1--c2----------c5--c6--c7
\--c3--c4--/
合并提交是c5
。您可以使用以下命令恢复合并:
$ git merge -m 1 c5
通常主分支是第一个父分支,因此-m 1
通常有效。
有更多信息here。
答案 1 :(得分:0)
这是我们使用的过程:
https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR
对于这种情况,它非常有效。当不再需要某个功能时,您可以非常轻松地重建。关键是不要“取消合并”一个功能;您需要合并所有其他功能,并省略您不再需要的功能。 Martin Fowler系列的连续交付书通过查看每个功能分支的一种非常古老的方式而造成巨大损害。 “高级版本控制”部分不是很好,因为它围绕这些问题跳舞。
答案 2 :(得分:0)
你不能只恢复合并提交吗?
git revert <SHA1-OF-MERGE-COMMIT>