2011-11-14 87 views

回答

3

有很多方法可以解決這個問題。

這是我會怎麼做(用一些額外的保險)

假設你的頭在「錯誤的地方」(沒有雙關語意),你可以

git branch rescue 
# you are still on master 
git reset HEAD^ # soft resets the last commit 
git push -f  # to undo the push - beware of other users of the push-branch 

現在編輯/解救你就地提交(因爲最後一次提交的更改現在正在等待)。如果出現緊急情況,您可以隨時結賬rescue分行,這是您開始此職位時HEAD的副本。

+0

我做我的本地......基本上是本地是我在做推和生產是我在哪裏做「git拉起源大師」 – Trace

+0

但我需要恢復生產,雖然正確 – Trace

+0

你做你想解決問題的地方(大概是地方)。你是否已經「拉」生產方?如果不是,你是好的,但除此之外,生產將不得不被拉動'--force' – sehe

1

我建議使用更正恢復提交來修復已推送的提交。您也可以安全地從恢復的提交開始您的實驗。另請參見Git Community Book, Undoing in Git

git revert HEAD 
git push 

重寫已經發布的提交被認爲是不好的做法(引自同款):如果你犯了一個提交

固定犯過的錯誤

,你以後想你有沒有,有兩個 根本不同的方式來解決這個問題:

您可以創建一個新的提交是撤銷無論是d一個由舊的 提交。如果你的錯誤已經被公開發布,這是正確的。

您可以返回並修改舊的提交。如果 已經公開歷史,您絕不應該這樣做; git通常不會期望 項目的「歷史」發生更改,並且無法正確執行 從歷史更改的分支重複合併。

另請參見Pro Git, Rebasing爲什麼這不好。

相關問題