[英]Restore a deleted Commit
我今天在做一個項目,我做了一個月的更改,然后我對項目進行了重大更改,這破壞了整個項目。
所以我使用
git reset --hard <commit>
進而
git push origin HEAD --force
在我之前的所有更改都消失之后,因為我選擇了錯誤的提交來重置(不確定)。 每當我現在編寫任何 git 命令時,我都會得到(不是 git 存儲庫)。
我打開了 Bit Bucket,兩個提交都消失了。 有什么辦法可以恢復那個提交嗎?
該項目是 Grails 項目上的一個常規項目。 我正在使用智能
默認情況下,您的本地存儲庫將提交的副本保留至少 30 天。 Bitbucket 上的存儲庫可能沒有。
如果您尚未刪除本地存儲庫,請在那里查找提交。 使用git reflog
或git reflog <branchname>
。 HEAD
的 reflog 保存了HEAD
過去表示的哈希 ID。 給定分支名稱(例如master
的引用日志包含該分支名稱過去表示的哈希 ID。
如果您在執行git reset --hard <commit>
時在分支xyzzy
上,則xyzzy@{1}
表示xyzzy
在此git 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 HEAD
或git push origin xyzzy
將這個哈希 ID(和提交,如果他們丟失了)發送到 Bitbucket 的 Git,並要求他們將他們的xyzzy
設置為這個哈希ID。 如果此操作最終丟失了一些提交,您將只需要--force
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.