2013-08-04 96 views
3

我做了一些我的回購一團糟。推後推回遠程回購

我做了一些改變&推送他們到回購&現在id想撤消。 (我合併的事情都是錯誤的)

在我的本地機器,我這樣做,是使用下面的命令:

git reset --hard 72a535b 

這似乎已經完成了帽子戲法。然後我正確實施了這些更改,承諾&試圖推送。

當然多數民衆贊成失敗,錯誤

否認非fast0forward裁判/頭/主(你應該先拉)

,我不認爲我想做的事情,如再生病失去了我的改變,並回到第一組破壞的mods。

我該如何分類這個可怕的混亂?

+0

可能重複的[撤銷git push](http://stackoverflow.com/questions/1270514/undoing-a-git-push) – sleske

+0

我發現遠程回購控制面板(其beanstalk)上的設置允許推力。我做到了這一點,並沒有錯誤。豆漿上的活動feed中沒有任何內容,但文件看起來是正確的。 – Will

回答

7

假設沒有被人拉着你的「壞」的變化呢,強制推:

git push -f 

服務器拒絕正常的推,因爲它會導致服務器端回購失去改變(你的一塌糊塗)。在這種情況下,這似乎是你想要的,所以繼續並強制它。請注意,強制推進通常是一件危險的事情,因爲你可能會失去歷史。

如果其他用戶已經拉動您的更改,它可能會變得混亂,因爲那樣他們將不得不以有意義的方式解決衝突,然後才能推送。因此,如果您在項目上有任何合作者,請務必檢查他們是否已經獲得了您的代碼副本,如果他們確實這樣做,請告知他們您要做什麼,並確保他們儘快提供正確的版本它是可用的。

+0

一位合作者已將這些更改撤回。他們需要做什麼來解決他們的機器? – Will

+0

也。 Iv'e試過-f--我還是goet遠程拒絕主 - >主(非快進) – Will

+1

嘗試'git push origin + master'。其他開發人員必須獲取新的更改,然後重新設置其更改或將其本地分支重置爲新的提示提交。 – knittl

1

你最好的和安全的選擇是

 git revert
好吧,它創建和額外的承諾,你的不良承諾終身。買爲什麼關心。只要分支頂端乾淨,爲什麼要隱藏過去的錯誤。

+0

+除非您確定可能的副作用,否則不要嘗試重寫歷史記錄。 – forvaidya

+0

我不在乎。你可以擴展更多關於如何在這種情況下使用它? – Will

+0

也是,它的3個提交,我如何撤消每個? git恢復只是做最後一個 – Will