2015-11-09 91 views
0

我試圖恢復上次推送提交分支dev。在做了git push -f之後,我意識到分支master並不是它在這臺機器上的最新版本,所以我不小心更改了master撤消git拉(強制更新)

我的下一步是使用不同的機器,其中master是最新版本。不好的一步是在該機器上運行git pull,該機器更新了所有分支,包括master

有沒有辦法恢復最後一次拉?

+0

@HBHB我認爲我有不同的情況,因爲拉有強制更新的提交樹,而不是快速轉發它 – Dan

+0

你看過'reflog' ?在這種情況下,它不是你在修改之前擁有的「頭」嗎? – houtanb

+1

我覺得'git checkout master; git reset --hard HEAD @ {1}'可以解決你的問題。 –

回答

0

沒有很好的方法來做你想做的事情,因此爲什麼強制推薦git的建議是違反的。

如果你已經失去了提交的SHA,你可以使用cherry-pick,即使你再也看不到git的提交了,它仍然可以引用它們(我想!)。另一個選擇是在那裏找到另一臺機器,舊提交cherry-pick提交你想要的,revert提交你不想要的,然後做另一個git push -f。 (然後嘗試再也不要做強制推送!)