4 回答

TA貢獻1836條經驗 獲得超13個贊
我不是專家。但是你可以嘗試
git fsck --full --no-reflogs | grep commit
查找已刪除分支的HEAD提交并將其取回。

TA貢獻1788條經驗 獲得超4個贊
僅有兩個命令可以挽救我的生命
1.這將列出所有先前的HEAD
git reflog
2.這將還原HEAD以提交您刪除的內容。
git reset --hard <your deleted commit>
ex. git reset --hard b4b2c02

TA貢獻2036條經驗 獲得超8個贊
您刪除的分支不會丟失,它們會通過您顯示的獲取操作復制到origin / contact_page和origin / new_pictures的 “遠程跟蹤分支”中(它們也通過您顯示的推送而被撤回,但它們已被推送到ref / remotes / origin /而不是refs / heads /)。檢查git log origin/contact_page并git log origin/new_pictures查看您的本地副本是否“最新”,以及您認為應該存在的內容。如果在您顯示的獲取和推送之間有任何新的提交(從其他回購)推送到那些分支上,則可能“丟失”了那些(但您可能會在最近推送這些分支的另一個回購中找到它們) 。
提取/推送沖突
看來您是以正常的“遠程模式”獲?。ㄟh程ref / heads /本地存儲在refs / remotes / origin /中),但是以“鏡像模式”推送(本地ref /被推送到遠程ref /) 。檢查您的.git / config并協(xié)調remote.origin.fetch和remote.origin.push設置。
進行備份
在嘗試任何更改之前,請做一個簡單的tar或zip歸檔文件或整個本地存儲庫。這樣,如果您不喜歡發(fā)生的情況,則可以從已還原的存儲庫中重試。
選項A:重新配置為鏡像
如果打算將遠程存儲庫用作本地存儲庫的鏡像,請執(zhí)行以下操作:
git branch contact_page origin/contact_page &&
git branch new_pictures origin/new_pictures &&
git config remote.origin.fetch '+refs/*:refs/*' &&
git config --unset remote.origin.push &&
git config remote.origin.mirror true
您最終可能還希望刪除所有的ref / remotes / origin / refs,因為如果您在鏡像模式下運行,它們將無用(您的普通分支代替了通常的遠程跟蹤分支)。
選項B:重新配置為普通遙控器
但是,由于您似乎正在將這個遠程存儲庫與多個“工作”存儲庫一起使用,因此您可能不想使用鏡像模式。您可以嘗試以下方法:
git config push.default tracking &&
git config --unset remote.origin.push
git config --unset remote.origin.mirror
然后,您最終將要刪除遠程回購中的偽造的refs / remotes / origin refs git push origin :refs/remotes/origin/contact_page :refs/remotes/origin/new_pictures …。
測試推送
嘗試git push --dry-run看看它git push會做什么,而無需在遠程倉庫上進行任何更改。如果您不喜歡它說的那樣,請從備份(tar / zip)中恢復并嘗試其他選擇。
- 4 回答
- 0 關注
- 5342 瀏覽
添加回答
舉報