在一个分支中编码并分成多个?

时间:2018-06-16 20:16:40

标签: git

我在一个分支中编写了几个东西,其中大约有5个其他分支被合并。

现在,我想在其他5个分支中拆分它。

3个分支的一些更改是在单个文件中进行的,例如:FileA有更改A:1,A:2,A:3。 Branch1想要A: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个本地。这就是我想要的工作流程。

每个分支属于不同的拉取请求。 所有PR都将同时提供。 每个PR可以在任何时间以任何顺序被接受和合并(从第二个开始可能需要解决冲突)。

处理这种情况的最佳方法是什么? 任何工具?
脚本?
再也不这样做了? (不......我肯定会再次这样做)

我使用git gui

2 个答案:

答案 0 :(得分:0)

简短的回答确实是“永远不会那样做” 但是既然你已经发现自己已经处于这种状况,那么你可以查看你想要带来更改的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

答案 1 :(得分:0)

  

最好是提供一个测试用例我猜? &#34;你为什么会这样做   任何冲突?&#34;冲突实际上无法结账   其他分支使用消息&#34;文件提交部分内容   需要等级合并。&#34;。通过&#34; split&#34;我的意思是fileA有更改A1和   A2 ... Branch1想要A1,Branch2要A2 ......

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

然后可以暂时放弃WorkAllInOneBranch或重置为公共基础(例如master)以重新整合作品。