【问题标题】:Is there any way to undo the effects of "git revert head"?有什么办法可以撤销“git revert head”的影响?
【发布时间】:2011-04-09 10:02:57
【问题描述】:

我不小心对存储库中的错误分支运行了命令 - 有没有办法撤消此更改?

【问题讨论】:

  • 根据以下建议阅读了重置文档后, git reset --hard head~1 为我解决了这个问题。

标签: git undo revert


【解决方案1】:

git revert 只是创建一个新的提交——你可以用git reset --hard HEAD^“删除”它(不过要小心!)

【讨论】:

  • 小心git reset --hard HEAD^,因为它会删除任何未提交的更改。
  • 如果您在git reset --hard HEAD^ 之前执行git stash,您可以“保存”您未提交的更改。在git reset --hard HEAD^ 之后执行git stash pop 将未提交的更改重新加载到当前分支中。
【解决方案2】:

命令git revert 只是创建一个撤消另一个的提交。您应该能够再次运行git revert HEAD,它会撤消您之前的撤消并为此添加另一个提交。或者你可以做git reset --hard HEAD~。但要小心最后一个,因为它会擦除数据。

HEAD~ 表示当前HEAD

之前的提交

【讨论】:

  • 不,它不会擦除数据。它只是移动你的分支指针。之前的提交仍然存在,您可以通过查看git reflog (f.ex.) 来查看它的 ID。它将在两个月内进行垃圾收集(默认配置),但您可以关闭自动垃圾收集,然后您曾经所做的每一次提交将永远存在存储库。他们只是无法通过分支机构到达。但是你总是可以使用git fsck 找到它们,我已经发布了一个浏览所有使用它的提交的秘诀。
【解决方案3】:

还原还原怎么样?

查看git log,获取bad revert的hash tag:

git log -5

然后做反向还原本身:

git revert

【讨论】:

  • -1 这将创建另一个提交,这不是这里真正想要的
【解决方案4】:

如果您有足够的先见之明做到这一点:revert --no-commit master,您可以按照git status 的建议通过:git revert --abort 中止它:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
You are currently reverting commit dcc7c46.
  (all conflicts fixed: run "git revert --continue")
  (use "git revert --abort" to cancel the revert operation)

【讨论】:

    猜你喜欢
    • 2019-09-05
    • 2020-06-15
    • 2018-11-12
    • 2018-10-28
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    相关资源
    最近更新 更多