Git + Gerrit:合并树变更的两个依赖分支

问题描述:

我有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)。

现在该怎么办?如何清理这个烂摊子?

创建一个新分支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