Git 在一个分支中编码并拆分为多个分支?

Git 在一个分支中编码并拆分为多个分支?,git,Git,我在一个分支中编写了一些代码,其中大约有5个分支被合并 现在,我想把它分成其他5个分支 3个分支的一些更改是在单个文件中进行的,如:FileA有更改a:1、a:2、a:3。Branch1想要一个:1,Branch2 这5个分支都使用主节点作为基础。 这意味着没有一个代码必须包含其他4个代码,但现在可能包含新代码,这些代码将出现在多个代码中。 类似于一些分支中需要的新函数GetSpecialTime(),当合并所有请求时,该函数将是相同的 我也无法签出5个分支中的任何一个,因为它抱怨无法签出,因为

我在一个分支中编写了一些代码,其中大约有5个分支被合并

现在,我想把它分成其他5个分支

3个分支的一些更改是在单个文件中进行的,如:FileA有更改a:1、a:2、a:3。Branch1想要一个:1,Branch2

这5个分支都使用主节点作为基础。
这意味着没有一个代码必须包含其他4个代码,但现在可能包含新代码,这些代码将出现在多个代码中。
类似于一些分支中需要的新函数
GetSpecialTime()
,当合并所有请求时,该函数将是相同的

我也无法签出5个分支中的任何一个,因为它抱怨无法签出,因为存在不兼容的更改,如:

File level merge required.

error: Entry
'the/happy/source/file.cpp' not uptodate. Cannot merge.

Staying on branch
'TheBloatedBranchScaringTheDeveloper'
我无法在当前膨胀的分支上提交,因为这是一个“本地工作分支”,不是直接提交的分支,只有在其他5个分支上提交后,我才会更改回膨胀的分支,并在其上本地合并其他5个分支。这就是我想要的工作流程

每个分支属于不同的请求。 所有PRs将同时提供。 每份请购单可在任何时间以任何顺序接受和合并(当然,从第二份请购单开始可能需要解决冲突)

处理这种情况的最佳方法是什么?
有工具吗?
脚本?
再也不要那样做了?(不……我肯定会再做一次)


我使用的是
git-gui

简单的回答就是“再也不要那样做了”。
但是,由于您发现自己已经处于这种情况,现在您可以签出您想要的5个分支中的每一个,并从您所处理的分支中选择提交

让我们假设这就是你的分支所做的所有工作:

a58c7b8 (HEAD -> feature) commit we want to copy
f4ac9ea Fix spelling mistakes
9ebb329 Add some functions
4f7f95e Edit Readme
9750037 initial commit
您可以签出要在其中进行更改的分支,并选择所需的提交:

git checkout <targetBranch>
git cherry-pick a58c7b8
git签出
吉特樱桃精选a58c7b8

我想最好是提供一个测试用例?“你为什么要这么做 有冲突吗?“冲突实际上是无法签出 其他分支在那里提交部分内容,并显示消息“File” 需要级别合并。“。我所说的“拆分”是指fileA有A1和A1的更改 A2。。。Branch1想要A1,Branch2想要A2

无法切换分支,因为您有工作目录更改。解决方案是将您的工作提交到多个提交中(您可以阶段特定的行),然后这些行将被挑选到应该提交它们的相应分支


然后可以暂时丢弃
WorkAllIneBranch
,或者将其重置为公共基础(例如
master
),以便重新集成工作。

是的,我忘了提到无法签出sry。看起来您当前的分支上有一些未限制的更改。要么提交它们,要么在它们尚未完成的情况下隐藏它们(git stash),以便您能够签出所需的分支。顺便说一句,我不能在当前分支上提交,因为这是一个工作分支(而不是直接提交的分支,只有在其他分支上提交并在其上本地合并之后)。我将检查
git存储
thx!我认为
git stash
可以工作,但我需要创建补丁,将它们中的每一个部分应用到5个分支上,我想知道
git stash
是否有助于这一点,只有测试才能告诉我。你做了什么还不清楚。您有一个分支
功能
,其中合并了其他5个分支。然后呢?是否存在您尚未解决的冲突?你能解释一下你一步一步地做了什么,然后你处于什么状态吗?不,等等。我有一个主分支,主分支。我在master的基础上创建了5个分支。我对5个分支中的每一个都做了更改。我把它们都合并在一个枝干上(臃肿的枝干)现在我在最后一个分支上做了更改,我需要在其他5个分支上拆分更改。如果由于我描述的签出错误消息而无法更改到其他分支,则无法解决冲突。如果你认为我可以用不同的方式澄清这个问题,你能具体指出在哪里吗?除非这个解释足够,否则我可以在需要时改写:)如果你成功地将5个分支合并到
WorkAllInOneBranch
中,然后在上面做了一些新的工作,为什么会有冲突?另外,您所说的“拆分其他5个分支上的更改”是什么意思。你的意思是,在你想要提交的新工作中,一些工作在概念上属于不同的分支吗?我想最好是提供一个测试用例?“为什么会有冲突?”冲突实际上是无法签出其他分支以提交部分内容,并显示消息“需要文件级合并”。我所说的“拆分”是指fileA有A1和A2的更改。。。Branch1想要A1,Branch2想要A2。。。是的,新工作属于diff分支,因为它们属于diff PullRequests。在未来的某一天,所有的PRs都将在同一个分支中,合并在一起,但现在,我需要创建5个PRs,它们可能相互独立地被接受。Thx,我改进了问题:)“你可以表演特定的台词”:哦,我必须试试!