【发布时间】:2011-04-09 10:02:57
【问题描述】:
我不小心对存储库中的错误分支运行了命令 - 有没有办法撤消此更改?
【问题讨论】:
-
根据以下建议阅读了重置文档后, git reset --hard head~1 为我解决了这个问题。
我不小心对存储库中的错误分支运行了命令 - 有没有办法撤消此更改?
【问题讨论】:
git revert 只是创建一个新的提交——你可以用git reset --hard HEAD^“删除”它(不过要小心!)
【讨论】:
git reset --hard HEAD^,因为它会删除任何未提交的更改。
git reset --hard HEAD^ 之前执行git stash,您可以“保存”您未提交的更改。在git reset --hard HEAD^ 之后执行git stash pop 将未提交的更改重新加载到当前分支中。
命令git revert 只是创建一个撤消另一个的提交。您应该能够再次运行git revert HEAD,它会撤消您之前的撤消并为此添加另一个提交。或者你可以做git reset --hard HEAD~。但要小心最后一个,因为它会擦除数据。
HEAD~ 表示当前HEAD
【讨论】:
git reflog (f.ex.) 来查看它的 ID。它将在两个月内进行垃圾收集(默认配置),但您可以关闭自动垃圾收集,然后您曾经所做的每一次提交将永远存在存储库。他们只是无法通过分支机构到达。但是你总是可以使用git fsck 找到它们,我已经发布了一个浏览所有使用它的提交的秘诀。
还原还原怎么样?
查看git log,获取bad revert的hash tag:
git log -5
然后做反向还原本身:
git revert
【讨论】:
如果您有足够的先见之明做到这一点: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)
【讨论】: