2014-09-27 108 views
0

我必須清理遠程/公共分支「OLD」,因爲它包含一些壞/巨大的提交。GIT公共分支清理到新分支

OLD - 簡化圖

(...) -> c234 -> c235(huge to fix) -> c236 -> c237(huge to fix) -> c238 -> c239 -> (...) -> HEAD 

這樣做我所做的:

1)我創建了一個 「新」 的分支。

2)之前找回第一次巨大的承諾(C234)

3)櫻桃前的最後一次巨大的挑提交所有提交。 (C236)

4)然後我複製從 「老」 分支的所有修改過的文件後,最後一個巨大的提交(C237)

5)最後創造了許多小提交反映變化(C235,C237)

現在新 - 簡化圖

(...) -> c234 -> c236 -> (many commits reflecting state after c237) -> HEAD 

現在,在我看來,我得變基/櫻桃挑「老」之後(C237)進行的所有更改爲「新」

頂部

新的預期 - 簡化圖

(...) -> c234 -> c236 -> (many commits reflecting state after c237) -> c238 -> c239 -> (...) -> HEAD 

我試過這種混帳變基-i,但因爲這是一個公開回購,它包含很多(有近400對提交舊HEAD)和合並我不時要解決衝突 - 女巫可能需要我很多天。

任何想法如何處理它。

+1

你使用的** exact ** rebase命令是什麼? – 2014-09-27 22:16:23

+0

第一次嘗試是 混帳變基-i --onto裁判/頭/ C235老 的想法是改變提交訂單,加入他們的行列,他們分成許多小。 但是,當用戶發生合併衝突時 - 我必須再次解決它,我放棄了20次手動合併。 – Fazer 2014-09-27 22:23:30

回答

0

聽起來好像(many commits reflecting state after c237)最終並沒有像您在OLD分支處的提交c237那樣最終重現相同的狀態。如果你這樣做,你不應該得到任何合併衝突。

這意味着你需要在嘗試中才能看到你錯過了什麼底墊之前做git diff c237

+0

我試過也沒做任何編輯就做了rebase,但它要求我解決衝突(可能是因爲很多提交都是在老分支之外進行的,原來合併了) – Fazer 2014-09-27 22:34:45