Git 吉特+;Gerrit:使用树更改合并两个从属分支
我有Git 吉特+;Gerrit:使用树更改合并两个从属分支,git,version-control,merge,gerrit,Git,Version Control,Merge,Gerrit,我有master和两个分支:branch-a和branch-b。第一个包含一些代码更改,但保持不变(旧)文件和文件夹结构。Second没有对代码进行任何更改,但具有全新的文件和文件夹结构 我所做的是: 我对分支-a做了一些更改并提交了它们。然后我把它们推给了Gerrit,但更改还没有被审查,因为它还没有完成 然后我做了一个严重的结构改变。但我在切换到一个新的分支之前错误地这么做了。在我看来,向a分支机构承诺是错误的。我无法签出master,因为git警告我可能会覆盖更改,并要求提交或隐藏更改 因
master
和两个分支:branch-a
和branch-b
。第一个包含一些代码更改,但保持不变(旧)文件和文件夹结构。Second没有对代码进行任何更改,但具有全新的文件和文件夹结构
我所做的是:
master
,因为git警告我可能会覆盖更改,并要求提交或隐藏更改分支-b
,提交了对它的所有更改,并将其推给Gerrit。它已审核,但现在处于已提交、合并挂起
状态,因为它依赖于分支-a
,尚未审核branch-a
的更改合并到master
,并保留在branch-b
引入的文件夹结构上
我无法审查和提交分支机构a的更改,因为尚未完成工作。(我想)我不能在本地将它合并到master,因为它有显著的树结构更改(旧的文件夹结构),并且会覆盖以后使用branch-b
所做的一切。(我想)我不能将branch-a
(代码更改)合并到master
,然后再将branch-b
(结构更改)合并到它上面,因为我最终会得到新的文件和文件夹结构,但旧代码(branch-b
会覆盖branch-a
)
我现在该怎么办?如何清理此混乱?创建一个新分支
branch-c
通过git reset重置它--硬源代码/master从本地branch-b
中选择提交,将其推送审查,并将其合并而不依赖。然后放弃来自分支b的更改
要么我遗漏了什么,要么这只解决了问题的一半。如果我跟随你,我将审查并合并结构变更(branch-c
cherry piked frombranch-b
)。但当我最终在其上应用branch-a
时,它要么不会被合并(由于文件和文件夹位置发生重大变化),要么会将文件结构恢复到原来的结构。当提交在branch-c
上时,rebasebranch-a
与origin/mastergit rebase-p origin/master
解决冲突并将新补丁集推送到远程审查分支