GIT:如何从另一个分支撤销一个分支的所有更改

3
在Git中,我如何从另一个分支中撤销一个分支的所有更改。
我之前从主分支(master)创建了一个名为 feature/new-feature 的分支。
在开发我的功能期间,其他人也从主分支(master)进行了工作,并将许多更改合并回主分支(包括我的更改)。
假设我想从主分支中删除我在 feature/my-feature 上所做的所有更改。我需要使用哪个git命令来完成这个操作?
1个回答

3

我假设事情是合并的,而不是变基。

运行git log --all --decorate --oneline --graph以获得您的历史记录的漂亮图形。找到将您的分支合并到主分支的合并提交哈希值。

您需要执行git revert。然而,由于这是一个合并,您需要选择两个父提交中的一个。您可以附加-m 1来指示要选择的父提交是从分支合并到(master)的提交。运行git revert -m 1 <merge commit hash>,并解决任何冲突。

这将显示为单个提交,并且如果操作不正确,则可以在以后重新revert/reset


谢谢。但我已经合并了多次。有没有一种方法可以指定一个分支而不是提交哈希值?或者除了逐个还原所有合并提交之外,还有其他的解决方法吗? - X0r0N
据我所知,分支在默认合并提交描述之外的历史记录中不会反映出来。逐个撤销提交可能是你最好的选择。 - kinbiko
获取提交ID的命令:git log --all --pretty=format:"%h" --merges --grep "Merge.*feature/my-feature'.*into master"。如果你使用GitHub:git log --all --pretty=format:"%h" --merges --grep "Merge pull request .* from .*feature/my-feature"。然后你可以将其导入到xargs git revert -m1,但可能会产生冲突。 - ilyazub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接