Git + Gerrit:使用树更改合并两个依赖分支

时间:2014-01-17 14:42:45

标签: git version-control merge gerrit

我有master和两个分支:branch-abranch-b。首先包含一些代码更改,但仍保留在未更改的(旧)文件和文件夹结构上。其次没有对代码进行任何更改,但是有一个全新的文件和文件夹结构。

我做了什么,是:

  1. 我对branch-a进行了一些更改并提交了它们。然后我把它们推到Gerrit,但是还没有审查改变,因为它还没有完成。

  2. 然后我做了一个严肃的结构改变。但是在切换到新的分支之前我错误地做了。承诺branch-a对我来说似乎不对。我无法结账master,因为git警告我可能的更改被覆盖并被要求提交或存储。

  3. 因此,我创建了一个新的branch-b,对其进行了所有更改并将其推送到Gerrit。它已经过审核,但现在处于Submitted, Merge Pending州,因为它取决于branch-a,尚未审核。

  4. 我现在该怎么办?有没有办法(在这种情况下)将branch-a合并到master的更改保留在branch-b引入的文件夹结构中?

    我无法审核并提交branch-a的更改,因为有关它的工作尚未完成。 (我认为)我无法将它合并到本地的master,因为它具有重要的树结构更改(旧文件夹结构),并且会覆盖所有内容,稍后会使用branch-b覆盖。 (我认为)我无法将branch-a(代码更改)合并到master,然后将branch-b(结构更改)合并到它上面,因为我最终会得到新文件和文件夹结构,但旧代码(branch-b会覆盖branch-a)。

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

1 个答案:

答案 0 :(得分:1)

创建一个新的分支branch-c通过git reset --hard origin/master重置它来挑选本地branch-b的提交将其推送进行审核,它将在没有依赖的情况下合并。然后放弃来自branch-b的更改。