2014-01-17 33 views
0

我有master和兩個分支:branch-abranch-b。首先包含一些代碼更改,但保持不變(舊)文件和文件夾結構。其次不會引入對代碼的任何更改,但具有全新的文件和文件夾結構。Git + Gerrit:合併樹變更的兩個依賴分支

我所做的,就是:

  1. 我做了一些改動branch-a和COMMITED他們。然後我把他們推到了Gerrit,但變化還沒有審查,因爲它尚未完成。

  2. 然後我做了一個嚴重的結構變化。但我在切換到新分支之前錯誤地做了。承諾branch-a對我來說似乎是錯誤的。我無法結帳master,因爲git警告我可能的更改被覆蓋並要求提交或存儲。

  3. 因此,我創建了一個新的branch-b,對其進行了所有更改並將其推送到Gerrit。這是審查,但現在在Submitted, Merge Pending狀態,因爲它取決於branch-a,尚未審查。

現在該如何處理?有沒有什麼辦法(在這種情況下)將branch-a合併爲master,並保留在與branch-b一起引入的文件夾結構中?

我無法檢查並提交來自branch-a的更改,因爲其上的工作尚未完成。 (我認爲)我不能將它合併到本地的主設備上,因爲它具有顯着的樹結構更改(舊文件夾結構),並且會覆蓋所有內容,稍後將完成,並且將與branch-b一起完成。 (我認爲)我不能合併branch-a(代碼更改)到master,然後合併branch-b(結構更改),因爲我最終會得到新的文件和文件夾結構,但舊代碼(branch-b會覆蓋branch-a)。

現在該怎麼辦?如何清理這個爛攤子?

回答

1

創建一個新分支branch-c重置它git reset --hard origin/master櫻桃選擇從本地提交branch-b提交它的審查,它將被合併,無依賴性。然後放棄從branch-b來的變化。

+0

要麼我錯過了一些東西,要麼只解決一半的問題。如果我關注你,我會審查和合並結構變化('branch-c'從'branch-b'跳過的櫻桃樹)。但是,當我最終應用'branch-a'時,它將不會合並(由於重要的文件和文件夾位置更改),或者它會將文件結構恢復爲舊的。 – trejder

+0

當在'branch-c'上提交的提交,使用origin/master'git rebase -p origin/master'重新綁定'branch-a'解決衝突並將新補丁集推送到遠程審閱分支 – HiB