更换并推动磁头后恢复提交

时间:2015-05-26 07:51:38

标签: git github git-push git-commit git-reset

我几天前犯了一些不好的代码,今天我改变并推动了一个老头来掌握。

在改头之前:

提交4

提交3 - 错误代码从此处开始

提交2 - 我在这里设置了头并推了

提交1

改变头后:

提交2 - 当前负责人

提交1

问题是现在我想要那些'糟糕的提交'。

有可能让他们回来吗?

2 个答案:

答案 0 :(得分:1)

您可以使用git reflog解决问题:

git reflog
a8U3Ild... HEAD@{10}: commit 3
e3Noj1q... HEAD@{11}: commit 4

找到您删除的提交的SHA-1哈希值。您想要的提交是"提交4"在你回滚之前,这是分公司的负责人。然后,您可以将当前分支重置为"提交4"像这样:

git checkout master
git reset --hard e3Noj1q

答案 1 :(得分:1)

如果您在reflog中仍然引用了已删除的提交,则应该能够按照此处的说明恢复它们:
http://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery#Data-Recovery

git reflog的man页面:http://git-scm.com/docs/git-reflog
git fsck的手册页:http://git-scm.com/docs/git-fsck