如何仅从分支中删除提交以在以后干净地添加它们(无冲突)?

时间:2019-02-08 01:23:16

标签: git merge

假设您有一个包含以下合并的仓库:

master: -A-B-C-D
feature:    -C-D-E-F

从母版中删除合并的C和D,然后再从功能分支合并回母版的最佳方法是什么?

master: -A-B-
feature:    -C-D-E-F

需要通过向主分支的单个拉取请求(无需强制将其推入主分支,重命名分支等)来完成更改。

当我尝试以下操作时:

git checkout master
git checkout -b revert/feature
git revert -m 1 D
git revert -m 1 C

然后将其推送到远程功能,然后将功能合并回主服务器,存在合并冲突,并且C和D仍将还原。

2 个答案:

答案 0 :(得分:0)

如果您希望还原已还原的提交,则需要还原其还原提交本身。

git checkout master 
git checkout -b revert/feature 
git revert -m 1 D 
git revert -m 1 C
git checkout -b feature
git revert <git-revert-C-sha>
git revert <git-revert-D-sha>

答案 1 :(得分:0)

如果我正确理解了您的问题,则可以尝试从master的HEAD创建新分支,然后将来自feature的新提交添加到该分支中。

git checkout master
git checkout -b feature_to_push
git cherry-pick hash-of-E
git cherry-pick hash-of-F