我可以撤消在其他git分支中进行的更改吗?

时间:2018-05-22 14:21:33

标签: git gitlab git-branch git-merge branching-and-merging

我正在开发名为x的git分支。前段时间我不得不从分支y合并到该分支更改。现在,由于我已完成工作,我想从分支x发布我的更改,因此请进行合并请求。但是分支y中的功能尚未准备好生产,但它们将包含在我的分支中(但我不再需要它们) - 是否有一个简单的解决方案# 34;取消合并"我将分支y合并到我的分支时所做的更改? (所以他们不会被包括在MR中)

2 个答案:

答案 0 :(得分:1)

您可以删除从分支y合并的提交。例如,使用git rebase

pick bba85d4 aaaa
d 7355f82 bbbb
d 03cac01 cccc
pick 6f43992 dddd
pick 37eabec eeee

" d"表示您要删除这两个提交。现在保存文件,然后推送更改。

如果您不想重写历史记录,可以按照其他答案中的建议创建新分支和cherry-pick要包含的提交。

答案 1 :(得分:1)

您可以创建一个仅包含所需更改的新分支,然后从中创建一个新的拉取请求:

我们假设您希望从y创建一个新分支,该分支将恢复为提交1234,然后将其合并到x

git checkout -b new_branch upstream/master
git cherry-pick 1234
git push -u origin new_branch

然后从new_branchx

创建拉取请求

(我可能会误解x - > y或y - > x的顺序,但它并不重要。想法是创建一个新的分支,然后挑选你想要的变化)