繁体   English   中英

恢复已删除的提交

[英]Restore a deleted Commit

我今天在做一个项目,我做了一个月的更改,然后我对项目进行了重大更改,这破坏了整个项目。

所以我使用

git reset --hard <commit>

进而

git push origin HEAD --force

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

我打开了 Bit Bucket,两个提交都消失了。 有什么办法可以恢复那个提交吗?

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

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

如果您尚未删除本地存储库,请在那里查找提交。 使用git refloggit reflog <branchname> HEAD的 reflog 保存了HEAD过去表示的哈希 ID。 给定分支名称(例如master的引用日志包含该分支名称过去表示的哈希 ID。

如果您在执行git reset --hard <commit>时在分支xyzzy上,则xyzzy@{1}表示xyzzygit reset --hard之前持有的哈希 ID,因此git reflog xyzzy将显示您想要的提交. 您现在可以git reset --hard <commit>哈希 ID,将所有数字加一,即xyzzy@{1}现在是xyzzy@{2}以及您上次选择的错误提交哈希 ID现在是xyzzy@{1} 同时xyzzy (又名xyzzy@{0} )现在是您这次刚刚选择的哈希 ID。

您现在可以git push origin HEADgit push origin xyzzy将这个哈希 ID(和提交,如果他们丢失了)发送到 Bitbucket 的 Git,并要求他们将他们的xyzzy设置为这个哈希ID。 如果此操作最终丢失了一些提交,您将只需要--force

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM