git revert <commit_hash>
一个人是行不通的。显然,-m
必须指定。
最佳答案
在 git revert -m
中,-m
选项指定了parent number。这是必需的,因为 merge 提交有多个父级,并且 Git 不会自动知道哪个父级是主线,哪个父级是您要取消 merge 的分支。
当您在 git log
的输出中查看 merge 提交时,您会看到它的父项列在以 Merge
开头的行中:
commit 8f937c683929b08379097828c8a04350b9b8e183
Merge: 8989ee0 7c6b236
Author: Ben James <ben@example.com>
Date: Wed Aug 17 22:49:41 2011 +0100
Merge branch 'gh-pages'
Conflicts:
README
在这种情况下,git revert 8f937c6 -m 1
将为您提供 8989ee0
中的树,而 git revert -m 2
将恢复树在 7c6b236
中的状态。
为了更好地理解父 ID,您可以运行:
git log 8989ee0
和
git log 7c6b236
关于git - 如何还原已推送到远程的 merge 提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7099833/