4 回答

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

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

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