Git:如何在没有冲突的情况下手动操作/制作两个分支之间的合并

时间:2014-12-30 23:06:31

标签: git merge git-merge

假设有一个我们称之为分支A的功能分支 分支A包含三个文件A1(index.html),A2(main.css)和A3(script.js)。
在分支A中,创建/签出了分支B,提供了B1B2B3
现在,假设B1 - B3的所有内容已完全删除且代码完全不同,然后将其提交到分支B
假设分支B的所有文件的新代码最终都需要作为其子集集成到原始代码中。

我希望通过签出分支B并运行A,将A代码集成到git merge B代码中。我认为这会给我一个合并冲突,我可以用它来制作新版本的A1 - A3来提交分支A。 但是,Git没有产生预期的合并冲突,而是用A代码完全替换了所有B代码。

如何整合这两个分支的代码?
我意识到可以从B文件中复制代码并将其传递到A文件的代码中,这些代码都在Git之外。不过,我认为这不是一个理想的解决方案,因为项目历史不会反映出一些A代码来自B的事实。

1 个答案:

答案 0 :(得分:0)

如果您在分支A上没有新提交,则分支BA的后代。因此,合并(默认情况下)作为快进完成,即仅生成显式合并提交{}仅A设置为B。 (您可以使用git merge --no-ff选项生成显式合并提交。)

合并的想法是将所有新变化集成到旧状态。如果更改正在用完全不同的内容替换一个文件的内容,那么通过在分支A上执行此操作来完成该更改,这将导致新内容。

我目前无法想到这不是你想要的情况。