簡體   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