0
我試圖恢復上次推送提交分支dev
。在做了git push -f
之後,我意識到分支master
並不是它在這臺機器上的最新版本,所以我不小心更改了master
。撤消git拉(強制更新)
我的下一步是使用不同的機器,其中master
是最新版本。不好的一步是在該機器上運行git pull
,該機器更新了所有分支,包括master
。
有沒有辦法恢復最後一次拉?
我試圖恢復上次推送提交分支dev
。在做了git push -f
之後,我意識到分支master
並不是它在這臺機器上的最新版本,所以我不小心更改了master
。撤消git拉(強制更新)
我的下一步是使用不同的機器,其中master
是最新版本。不好的一步是在該機器上運行git pull
,該機器更新了所有分支,包括master
。
有沒有辦法恢復最後一次拉?
沒有很好的方法來做你想做的事情,因此爲什麼強制推薦git的建議是違反的。
如果你已經失去了提交的SHA,你可以使用cherry-pick
,即使你再也看不到git的提交了,它仍然可以引用它們(我想!)。另一個選擇是在那裏找到另一臺機器,舊提交cherry-pick
提交你想要的,revert
提交你不想要的,然後做另一個git push -f
。 (然後嘗試再也不要做強制推送!)
@HBHB我認爲我有不同的情況,因爲拉有強制更新的提交樹,而不是快速轉發它 – Dan
你看過'reflog' ?在這種情況下,它不是你在修改之前擁有的「頭」嗎? – houtanb
我覺得'git checkout master; git reset --hard HEAD @ {1}'可以解決你的問題。 –