在更改并推送头部后恢复提交

Revert commits back after the head was changed and pushed

前几天犯了一些烂代码,今天改了,把一个老头推给master

换头前:

提交 4

提交 3 - 错误代码从这里开始

commit 2 - 我在这里设置头部并推送

提交 1

换头后:

提交 2 - 当前头

提交 1

问题是现在我想要那些 'bad commits' 回来。

有可能找回吗?

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

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

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

git checkout master
git reset --hard e3Noj1q

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

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