Git + Gerrit:合并树变更的两个依赖分支
我有master
和两个分支:branch-a
和branch-b
。首先包含一些代码更改,但保持不变(旧)文件和文件夹结构。其次不会引入对代码的任何更改,但具有全新的文件和文件夹结构。Git + Gerrit:合并树变更的两个依赖分支
我所做的,就是:
我做了一些改动
branch-a
和COMMITED他们。然后我把他们推到了Gerrit,但变化还没有审查,因为它尚未完成。然后我做了一个严重的结构变化。但我在切换到新分支之前错误地做了。承诺
branch-a
对我来说似乎是错误的。我无法结帐master
,因为git警告我可能的更改被覆盖并要求提交或存储。因此,我创建了一个新的
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
来的变化。
要么我错过了一些东西,要么只解决一半的问题。如果我关注你,我会审查和合并结构变化('branch-c'从'branch-b'跳过的樱桃树)。但是,当我最终应用'branch-a'时,它将不会合并(由于重要的文件和文件夹位置更改),或者它会将文件结构恢复为旧的。 – trejder
当在'branch-c'上提交的提交,使用origin/master'git rebase -p origin/master'重新绑定'branch-a'解决冲突并将新补丁集推送到远程审阅分支 – HiB