Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 吉特+;Gerrit:使用树更改合并两个从属分支_Git_Version Control_Merge_Gerrit - Fatal编程技术网

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没有对代码进行任何更改,但具有全新的文件和文件夹结构

我所做的是:

  • 我对分支-a做了一些更改并提交了它们。然后我把它们推给了Gerrit,但更改还没有被审查,因为它还没有完成

  • 然后我做了一个严重的结构改变。但我在切换到一个新的分支之前错误地这么做了。在我看来,向a分支机构承诺是错误的。我无法签出
    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 from
    branch-b
    )。但当我最终在其上应用
    branch-a
    时,它要么不会被合并(由于文件和文件夹位置发生重大变化),要么会将文件结构恢复到原来的结构。当提交在
    branch-c
    上时,rebase
    branch-a
    与origin/master
    git rebase-p origin/master
    解决冲突并将新补丁集推送到远程审查分支