git是否可以像git rebase一样应用保留冲突标记?

git是否可以像git rebase一样应用保留冲突标记?,git,conflict,rebase,apply,Git,Conflict,Rebase,Apply,git rebase将冲突标记保留在文件中;比如: <<<<<<< HEAD Whatever line + context is different from the previous commit ======= Whatever line + context is different from the commit being applied >>>>>>> new version, new branch:

git rebase将冲突标记保留在文件中;比如:

<<<<<<< HEAD
Whatever line + context is different from the previous commit
=======
Whatever line + context is different from the commit being applied
>>>>>>> new version, new branch:app/views/common/version.txt
>新版本,新分支:app/views/common/version.txt

当我使用git apply应用用git格式补丁创建的补丁时,默认情况下它将无法保留任何修改过的文件。我可以给它--reject,这将导致它为那些有无法解决的冲突的人创建.rej文件,但实际上,我希望它修改文件并使每个文件保持git rebase的状态,这样我就可以打开文件,手动合并它,然后git添加它并告诉git apply继续。有没有什么我不知道的方法可以做到这一点?

对我来说,以下工作:

git init
seq 1 30 > file
git add file
git commit -m 1-30
sed -i '13a13.4' file
git commit -m 'add 13.4' file
git format-patch -1
git reset --hard HEAD^
sed -i 13d file
git commit -m 'remove 13' file
git am -3 0001-add-13.4.patch

之后,
文件
有冲突标记。即使用
git am-3
而不是
git apply

使用带有三向合并的选项:

git apply -3 0001-patch.patch

另一种解决方案是使用
patch--merge
而不是任何git工具应用补丁。当从一个完全不同的git回购中带来一些更改时,这对我来说效果更好,因此我无法(轻松地)使用
git am-3
git apply-3

Hmmm-有趣的是,似乎确实做到了我想要的。我认为git使用的是git apply——也许它使用的是内部API,无法通过git apply的命令行选项访问。谢谢TL;DR:使用
-3
选项
git-am
git-apply
(以您碰巧使用的为准)。该选项告诉git执行合并,而不是在发生冲突时中止。这不起作用:错误:修补程序失败:文件。cpp:383错误:存储库缺少必要的blob以回退到三方合并。错误:file.cpp:patch不适用它甚至可以执行以下操作:patch--merge=diff3