Git合并除一个文件外的所有文件,并且该文件是(完整)冲突文件

Git合并除一个文件外的所有文件,并且该文件是(完整)冲突文件,git,merge,branch,Git,Merge,Branch,对不起,这个标题,很难用连贯的句子来概括 我见过很多人要求合并除一两个文件以外的所有文件,这里的建议通常是樱桃选择。然而,我不确定如何做到这一点,也找不到类似的问题 基本上我有两个分支,让我们称它们为dev和refactor。 我想将重构分支合并到开发,这是通常的做法 refactor包含几个新文件,其中一个与主逻辑完全不同(我们称之为file);我希望合并分支,但是我希望文件冲突,或者至少是类似的东西 // file in <dev> lots of code loop m

对不起,这个标题,很难用连贯的句子来概括

我见过很多人要求合并除一两个文件以外的所有文件,这里的建议通常是樱桃选择。然而,我不确定如何做到这一点,也找不到类似的问题

基本上我有两个分支,让我们称它们为
dev
refactor
。 我想将
重构
分支合并到
开发
,这是通常的做法

refactor
包含几个新文件,其中一个与主逻辑完全不同(我们称之为
file
);我希望合并分支,但是我希望
文件
冲突,或者至少是类似的东西

// file in <dev>
lots of code
loop
    main logic
lots more code
//中的文件
很多代码
环
主要逻辑
更多的代码
重构的要点是消除对大型、高度嵌套循环的需求。重构代码的形式为:

// file in <refactor>
lots of code
BLANK (where main logic ought to be)
lots more code
//中的文件
很多代码
空白(主逻辑应为空)
更多的代码
我希望整个文件弹出到“冲突模式”或什么的,这样我就可以有选择地把主要的逻辑从原来的到新的

这不仅仅是文件中的一个事件,还有几个事件,不过这只是为了给出一个想法


这可能吗?或者我必须在合并之前手动将代码从
dev
复制到
refactor
中吗?

您可以尝试使用一个只表示文件冲突的文件。但是,仅当当前分支和要合并到分支中的分支自存储在合并库中的版本以来都已触及该文件时,此操作才有效


如果您已经知道要在合并后但在提交之前手动编辑哪个文件,我只需运行
git merge--no commit…
。结果合并可能会标记为“准备提交”,但您可以先编辑它(然后
git添加
编辑结果)。您最终执行的手动
git提交
操作将是合并提交,因为合并过程会在
.git
目录中留下文件来记录此操作

无论是否存在任何冲突,在编辑时,您可以
git show HEAD:file
git show branch:file
查看这两个版本的文件
file
。如果需要,将结果转储到临时文件中

没有完全简单的方法可以查看公共祖先版本,但此两步方法将在类似Unix的shell中实现:

ancestor=$(git merge-base HEAD branch)
git show ${ancestor}:file
(或者,您可以将其简化为:

git show $(git merge-base HEAD branch):file

在这两种情况下,方法都是一样的:首先,我们重复进行
git merge
所做的合并基础计算,然后我们使用所选的修订来
显示
文件
文件
文件

感谢您的输入,我发现在撰写本文时我并不需要这个问题,但是现在已经需要了。