有什么办法可以消除“ git revert head”的影响?


67

我不小心在存储库中的错误分支上运行了该命令-是否可以撤消此更改?


3
在根据以下建议阅读了重置文档后,git reset --hard head〜1为我解决了该问题。
blueberryfields

Answers:


96

git revert只是创建一个新的提交-您可以使用“删除”它git reset --hard HEAD^(但是要更加小心!)


3
请小心,git reset --hard HEAD^因为它会删除所有未提交的更改。
Jeremen '16

2
如果您先执行“ a”操作git stash,则git reset --hard HEAD^可以“保存”未提交的更改。后git reset --hard HEAD^做了git stash pop重新加载未提交更改到当前分支。
kukko

27

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

HEAD~表示在当前HEAD之前的提交


5
不,它不会删除数据。它只是移动您的分支指针。先前的提交仍然存在,您可以通过查看git reflog(f.ex.)来查看其ID 。它会在两个月内被垃圾收集(默认配置),但是您可以关闭自动垃圾收集,然后您所做的每个提交将永久存在于该存储库中。它们只是无法通过分支到达。但是您始终可以使用找到它们git fsck,并且我发布了一个食谱来浏览所有使用它的提交。
亚里斯多德·帕加尔齐斯

4

如何还原还原?

查看git log并获取错误还原的哈希标签:

git log -5

然后反转恢复本身:

git revert


5
-1,这将创建另一个承诺,这是不是真的在这里想
CharlesB

0

如果你已经这样做了足够的先见之明:revert --no-commit master,可以中止与:git revert --abort按照git status建议:

$ 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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.