git - 还原 merge 所做的更改

标签 git revert

开发人员正在对两个文件进行小的更改。但是在这次提交期间,他遇到了 merge 冲突,删除了很多东西(可能没有最新的版本)。然后它被推送到共享仓库,其他一些开发人员做了一些其他提交。

现在,我们注意到 merge 删除了重要文件,我们想将其还原。
我怎样才能在不丢失下一次提交的更改的情况下执行此操作?

我试图 git revert commitsha,但它没有恢复更改。我需要还原 mergesha 吗?我怎样才能确定它?

最佳答案

git revert --mainline

通常:

git revert --mainline 1 dd8cbe3e4

地点:

  • dd8cbe3e4 是您要撤消的错误 merge 提交,并且
  • --mainline 告诉您要恢复之前的多个提交中的哪一个(请记住, merge 提交有多个父提交,您只能保留其中一个)。
    • 对于 1 的含义我找不到很好的解释,但我的猜测是 1,2,3... 对应于映射列表紧接在 dd8cbe3e4 之前的提交,按升序时间顺序排序(最旧的在前 - 这通常是您想要恢复的)。

来源:

http://thezencoder.com/2013/09/05/how-to-correctly-revert-a-bad-merge-in-git/

关于git - 还原 merge 所做的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323029/

相关文章:

git - 如何还原 'git filter-branch -f --env-filter'

git - 如何对 git status 输出进​​行排序

Git rebase 提交选择

git - 使用 git -r rm 后如何恢复我的 git 存储库

github - 如何在 GitHub 中撤消合并

svn - 回滚或将整个 svn 存储库恢复到旧版本

git - 从已推送的 merge 分支中恢复特定提交

linux - 根据轴在 Jenkins 多配置项目中选择 git 可执行文件

尽管 .gitignore 和 rm -r --cached,但 git 仍然将文件显示为未跟踪。我做错什么了?

git - 硬重置后推送 git 分支