2012-01-03 71 views
3

通常我會與heroku一起工作,並且在項目結束時,我有幾個小的提交來修復一些意想不到的錯誤。這導致了10個小的差異提交,我想重新組合成一個。問題是,歷史已經被推動。我如何調和這些東西?如何在多次推送後重新分配git歷史記錄,然後推送更新後的歷史記錄?

+0

這些承諾是其他人提取/拉動?換句話說,它是一個共享的存儲庫,還是隻有你曾經使用過的部署? – wadesworld 2012-01-03 23:14:48

+0

@wadesworld下面的兩個答案,這是一個壞主意,即使它不是共享存儲庫。這是一個不好的習慣,如果我發現自己認爲我需要這樣做,我會質疑我的前提導致我得出這樣的結論。 – tjarratt 2012-01-03 23:28:25

+0

有趣。我的問題不是常見問題嗎?人們只是咬緊牙關並保持多次提交? – dougvk 2012-01-04 20:10:11

回答

5

你想做什麼遠不如人們的建議那麼糟糕。確實,您不想重新推送到共享主分支的更改,重新分配發送給非共享/工作分支或非共享存儲庫的更改非常普遍。許多人認爲這是一個更好的做法,而不是用毫無意義的(可能不完整/不可行的提交)混淆項目歷史。

問問自己的問題是「任何人都會從我推動的分支中拉出來」。如果答案是否定的,那麼這樣做的問題只是理論上的問題,遠遠超過了混亂的歷史問題。如果答案是肯定的,那麼當然你不想這樣做。但是,在這種情況下,您應該問自己,您是否可以從該存儲庫中的非共享分支進行部署。創建一個正在進行的測試分支,自由提交和重新綁定。當你完成你的工作時,重新分配你的內心的內容,並把這個好的承諾推到共享的分支上。

+0

!做一個分支。 DERP。謝謝! – dougvk 2012-01-06 06:12:53

+0

如果有人拉動我推動不同的歷史,會發生什麼? – 2013-02-14 02:04:26

0

git-rebase手冊頁:重新分組(或任何其他形式的重寫)其他人基於工作的分支是一個壞主意;它下游的任何人都被迫手動修復他們的歷史。

所以一般 - 在推動任何東西后不要重新定位。

2

在推送完成後,您不應該重寫歷史記錄(重新分配)。如果有其他人從這個偏遠地區撤離,並且你重建並推動,你會有可怕的合併衝突。

+0

這樣很糟糕嗎? – 2013-02-14 02:04:47

+1

這並不糟糕,但如果您與單個存儲庫中的人員進行協作,則會很困難。當然是 – tjarratt 2013-03-02 01:53:55

4

如果你真的要推一個衍合分支(其中Git會默認拒絕),可以使用下面的命令:

git push --force heroku master 

要知道,這是在一般情況下,一個真正的壞主意,因爲其他人已經提到的原因。

相關問題