使用案例:同一個存儲庫A,B,B2的三個git克隆。 Repos A和B是正常的,B2是裸露的(用--bare製成)。在我的控制下,即只有一個用戶。強制使用Git rebase
現場B,我工作(幾個git提交),然後git推B2。
- 現場A,git pull B2。
- 現場A,git rebase -i xx..HEAD壓扁一些提交和清理歷史記錄(一個偉大的命令)。
- 問:如何將結果傳達給站點B?
我可以這樣做:
- 混帳推--force B2
但是,這並不完全正確。站點B的工作目錄在git pull B2後會有一個奇怪的歷史記錄。
我需要一些方法來不使用--force。我想扔掉xx..HEAD上 B2,然後從A也許正常推進:
在B2(裸回購)
- 的git的復位 - 硬XX
不確定這是否足夠。我可以通過從站點A重新克隆(刪除B2,git init --bare,從A推入)來實現,但這看起來像是矯枉過正。 How to push/pull Git rebase後似乎相關,但我希望除了「不這樣做」之外的一些答案。底線,我如何才能真正完全拋棄B2上的提交,這樣來自A的重新發布的歷史將被接受爲新的提交?