git - 如何还原已推送到远程的 merge 提交?

标签 git

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/

相关文章:

git - 如何在文件夹层次结构中将所有 git 内容向上移动一级?

git - 如何在 Gitlab 中成功的管道结束时创建 merge 请求?

Git:仅暂存修改的文件,不删除或添加

python - 将 Flask 项目部署到 Heroku 时出现 "Install dependencies with pip"异常

git - 当 gitlab-CI 管道失败时阻止提交

git - yarn install 在 git post-receive hook 中克隆 github 包时失败

git 。当推送不处理 .git/info/exclude 时忽略文件

git - 创建排除某些文件的补丁文件

Git: `git fetch` 报告的数字是什么意思?

git - 让头停止等待输入