git可以像git rebase那样内联离开冲突标记吗?

kcs*_*rom 14 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:app/views/common/version.txt
Run Code Online (Sandbox Code Playgroud)

当我使用git apply来应用使用git format-patch创建的补丁时,它将无法保留默认修改的任何文件.我可以给它--reject这将导致它为那些具有无法解决的冲突的人创建.rej文件,但实际上,我希望它修改文件并让每个人都处于git rebase所做的状态,这样我就可以打开文件,手动合并它,然后git添加它并告诉git apply继续.有没有办法做到这一点,我只是不知道?

Uwe*_*nig 7

对我来说,以下工作:

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
Run Code Online (Sandbox Code Playgroud)

之后file有冲突标记.这是用来git am -3代替git apply.

  • TL;DR:使用`-3` 选项来`git am` 或`git apply` *(无论你使用哪个)*。该选项告诉 git 执行合并而不是仅仅在冲突时中止。 (2认同)

tcb*_*tcb 5

将选项与三种方式合并使用:

git apply -3 0001-patch.patch
Run Code Online (Sandbox Code Playgroud)


Cat*_*tcu 5

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