恢复已删除的提交

时间:2020-03-26 21:27:33

标签: git bitbucket

我今天正在做一个项目,我做了一个月的更改, 然后我对该项目进行了重大更改,使整个项目中断。

所以我使用重置为上一次提交

git reset --hard <commit>

然后

git push origin HEAD --force

之后,所有之前的更改都消失了,因为我选择了错误的提交来重置为(不确定)。 并且每当我现在编写任何git命令时,我都会得到(不是git存储库)。

,我打开了Bit Bucket,两个提交都消失了。 是否有任何方法可以恢复该提交?

该项目是Grails项目的一个常规。 我正在使用intelliJ

1 个答案:

答案 0 :(得分:1)

默认情况下,您的 local 存储库将提交副本至少保留30天。 Bitbucket上的存储库可能没有。

如果您尚未擦除您的 local 存储库,请在此处查找提交。使用git refloggit reflog <branchname>HEAD的引用日志包含HEAD过去代表的哈希ID。给定分支名称(例如master)的引用日志包含该分支名称过去表示的哈希ID。

如果您在进行xyzzy时位于分支git reset --hard <commit>上,则xyzzy@{1}代表xyzzy在此{{ 1}},因此git reset --hard将向您显示所需的提交。现在,您可以git reflog xyzzy到那个哈希ID,将所有数字都加1,即git reset --hard <commit>现在是xyzzy@{1},而错误的提交哈希ID您上次选择的时间是xyzzy@{2}。同时xyzzy@{1}(又名xyzzy)现在是您这次 刚刚选择的哈希ID。

您现在可以xyzzy@{0}git push origin HEAD将此哈希ID(以及提交,如果他们丢失了,则将它们)发送到Bitbucket的Git,并要求他们设置他们的git push origin xyzzy与此哈希ID。如果此操作最终会丢失一些提交,则只需要xyzzy

相关问题