【问题标题】:Can I undo changes that were made in other git branch?我可以撤消在其他 git 分支中所做的更改吗?
【发布时间】:2018-11-01 08:43:00
【问题描述】:
我正在开发一个名为 x 的 git 分支。前段时间我不得不从分支y 合并到该分支的更改中。现在,既然我已经完成了我的工作,我想从分支x 发布我的更改,所以提出一个合并请求。但是分支y 中的功能尚未准备好投入生产,但它们将包含在我的分支中(但我不再需要它们) - 是否有一个简单的解决方案来“取消合并”具有当我将分支y 合并到我的分支中时制作了? (所以它们不会包含在 MR 中)
【问题讨论】:
标签:
git
gitlab
git-branch
git-merge
branching-and-merging
【解决方案1】:
您可以创建一个仅包含您希望的更改的新分支,然后从中创建一个新的拉取请求:
假设您希望从 y 创建一个新分支,该分支恢复为提交 1234,然后将其合并到 x:
git checkout -b new_branch upstream/master
git cherry-pick 1234
git push -u origin new_branch
然后创建从new_branch 到x 等的拉取请求。
(我可能会误解 x -> y 或 y -> x 的顺序,但这并不重要。想法是创建一个新分支并根据您希望的更改进行挑选)
【解决方案2】:
您可以删除从分支 y 合并的提交。例如,使用git rebase:
pick bba85d4 aaaa
d 7355f82 bbbb
d 03cac01 cccc
pick 6f43992 dddd
pick 37eabec eeee
“d”表示您要删除这两个提交。现在保存文件,然后推送更改。
如果您不想重写历史记录,则可以创建一个新分支,并 cherry-pick 您要包含的提交,如其他答案中所建议的那样。