我在一个分支中编写了几个东西,其中大约有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
。
答案 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
)以重新整合作品。