通常我會與heroku一起工作,並且在項目結束時,我有幾個小的提交來修復一些意想不到的錯誤。這導致了10個小的差異提交,我想重新組合成一個。問題是,歷史已經被推動。我如何調和這些東西?如何在多次推送後重新分配git歷史記錄,然後推送更新後的歷史記錄?
回答
你想做什麼遠不如人們的建議那麼糟糕。確實,您不想重新推送到共享主分支的更改,重新分配發送給非共享/工作分支或非共享存儲庫的更改非常普遍。許多人認爲這是一個更好的做法,而不是用毫無意義的(可能不完整/不可行的提交)混淆項目歷史。
問問自己的問題是「任何人都會從我推動的分支中拉出來」。如果答案是否定的,那麼這樣做的問題只是理論上的問題,遠遠超過了混亂的歷史問題。如果答案是肯定的,那麼當然你不想這樣做。但是,在這種情況下,您應該問自己,您是否可以從該存儲庫中的非共享分支進行部署。創建一個正在進行的測試分支,自由提交和重新綁定。當你完成你的工作時,重新分配你的內心的內容,並把這個好的承諾推到共享的分支上。
!做一個分支。 DERP。謝謝! – dougvk 2012-01-06 06:12:53
如果有人拉動我推動不同的歷史,會發生什麼? – 2013-02-14 02:04:26
從git-rebase
手冊頁:重新分組(或任何其他形式的重寫)其他人基於工作的分支是一個壞主意;它下游的任何人都被迫手動修復他們的歷史。
所以一般 - 在推動任何東西后不要重新定位。
在推送完成後,您不應該重寫歷史記錄(重新分配)。如果有其他人從這個偏遠地區撤離,並且你重建並推動,你會有可怕的合併衝突。
這樣很糟糕嗎? – 2013-02-14 02:04:47
這並不糟糕,但如果您與單個存儲庫中的人員進行協作,則會很困難。當然是 – tjarratt 2013-03-02 01:53:55
如果你真的要推一個衍合分支(其中Git會默認拒絕),可以使用下面的命令:
git push --force heroku master
要知道,這是在一般情況下,一個真正的壞主意,因爲其他人已經提到的原因。
- 1. IE歷史記錄推送狀態
- 2. jquery推送自定義歷史記錄
- 3. 強制推送後修復歷史記錄
- 4. 如何清理git歷史記錄刪除某些提交後被推送?
- 5. 如何將新的(重寫)歷史記錄推送到遠程存儲庫中
- 6. 停止git歷史記錄,然後再重新組合在一起
- 7. rebase之後推出新的歷史?
- 8. 更改$位置搜索防止推送到歷史記錄
- 9. 如何從parse.com獲取推送通知歷史記錄? (iOS)
- 10. 簡單的歷史記錄推碰
- 11. 如何在MySQL中保留記錄更新的歷史記錄?
- 12. GWT歷史記錄:歷史記號
- 13. AJAX後退按鈕歷史記錄
- 14. 在Facebook應用程序中推送歷史記錄
- 15. 如何在提交後刪除本地git歷史記錄?
- 16. Git svn clone:如何推遲修訂歷史記錄的提取
- 17. 重組項目文件夾後丟失了git歷史記錄
- 18. 爲什麼git合併在推送合併提交後生成兩個相同的更改歷史記錄?
- 19. Android:發送消息到歷史記錄
- 20. Git創建一個只包含指定目錄及其歷史記錄的新分支,然後推送到新的存儲庫
- 21. 在'git合併'後保留提交歷史記錄
- 22. 從Git歷史記錄中刪除具有歷史記錄的特定文件
- 23. 插入新的歷史記錄行
- 24. LDAP登錄歷史記錄
- 25. TFS2010:將歷史記錄移動源,然後刪除舊項目而不丟失歷史記錄?
- 26. 如何在SQL Server中的歷史記錄表中存儲歷史記錄
- 27. 在git中保存歷史記錄
- 28. Git重新分配壁球歷史
- 29. git記錄分支頭的歷史記錄嗎?
- 30. 將歷史記錄插入新表
這些承諾是其他人提取/拉動?換句話說,它是一個共享的存儲庫,還是隻有你曾經使用過的部署? – wadesworld 2012-01-03 23:14:48
@wadesworld下面的兩個答案,這是一個壞主意,即使它不是共享存儲庫。這是一個不好的習慣,如果我發現自己認爲我需要這樣做,我會質疑我的前提導致我得出這樣的結論。 – tjarratt 2012-01-03 23:28:25
有趣。我的問題不是常見問題嗎?人們只是咬緊牙關並保持多次提交? – dougvk 2012-01-04 20:10:11