Git 如何使用checkout命令重新创建冲突的文件状态?
我有长寿分支,不久前我解决了大的合并冲突。现在我想再次将Git 如何使用checkout命令重新创建冲突的文件状态?,git,merge,Git,Merge,我有长寿分支,不久前我解决了大的合并冲突。现在我想再次将master合并到我的分支中,但发生冲突。我有一点谷歌和发现的功能 但当我这样做的时候: git checkout --conflict=merge FileTheMergeConflictWas.ext 我什么也得不到 如何创建合并冲突解决文件并使用自动解决完成当前合并?如果您的合并已经提交,从某种意义上说已经太晚了。rerere代码的工作原理是在冲突发生时记录冲突,然后在解决冲突后(单独)记录冲突解决 冲突本身和您以前的解决方案都发生
master
合并到我的分支中,但发生冲突。我有一点谷歌和发现的功能
但当我这样做的时候:
git checkout --conflict=merge FileTheMergeConflictWas.ext
我什么也得不到
如何创建合并冲突解决文件并使用自动解决完成当前合并?如果您的合并已经提交,从某种意义上说已经太晚了。rerere代码的工作原理是在冲突发生时记录冲突,然后在解决冲突后(单独)记录冲突解决 冲突本身和您以前的解决方案都发生在过去,
git rere
未启用时。因此,要获得git-rere
立即录制它们,您必须及时返回,启用git-rere
,开始合并,获取冲突,解决冲突,然后返回到当前
如果你手边有时间机器,你可以用它。:-)我们大多数人都不这样做,但幸运的是,Git是一台时间机器!嗯,有点
只需打开gitrere
,然后使用历史记录检查正确的提交。这将为您提供一个“分离的头”,其中HEAD
指向您刚刚签出的提交。哪个提交是正确的?当然,就是上次合并之前的那个。这是现有合并提交的第一个父级
然后,现在您有一个分离的头部,并且处于正确的提交状态,执行合并,这将产生冲突:
git merge <hash-id>
你现在准备好出发了
小烦恼
如果您当前处于冲突的合并或ReBASE的中间,则现在必须中止它,然后使用Git时间机器返回并重新合并,然后重新启动冲突的合并或重新建立。(如果您已经完成了大量有用的工作,您可能希望先保存它,然后在某个地方提交它和/或根据需要创建一个指向当前提交的分支或标记名,然后再中止。)
如果您的合并已经提交,从某种意义上说已经太晚了。rerere代码的工作原理是在冲突发生时记录冲突,然后在解决冲突后(单独)记录冲突解决 冲突本身和您以前的解决方案都发生在过去,git rere
未启用时。因此,要获得git-rere
立即录制它们,您必须及时返回,启用git-rere
,开始合并,获取冲突,解决冲突,然后返回到当前
如果你手边有时间机器,你可以用它。:-)我们大多数人都不这样做,但幸运的是,Git是一台时间机器!嗯,有点
只需打开gitrere
,然后使用历史记录检查正确的提交。这将为您提供一个“分离的头”,其中HEAD
指向您刚刚签出的提交。哪个提交是正确的?当然,就是上次合并之前的那个。这是现有合并提交的第一个父级
然后,现在您有一个分离的头部,并且处于正确的提交状态,执行合并,这将产生冲突:
git merge <hash-id>
你现在准备好出发了
小烦恼
如果您当前处于冲突的合并或ReBASE的中间,则现在必须中止它,然后使用Git时间机器返回并重新合并,然后重新启动冲突的合并或重新建立。(如果您完成了大量有用的工作,您可能希望首先保存它,只需在某个地方提交它和/或创建一个指向当前提交的分支或标记名(视需要和情况而定),然后才中止。)
感谢torek。我在分支机构中完成以下步骤:git log --merges --oneline
30275e6 Merge branch 'master' into feature/5521_sign_cart_items
c28e258 Merge branch 'master' into feature/5521_sign_cart_items
f01e32c Merge branch 'master' into 5452_promocode
从第一行提取30275e6
:
$ git show 30275e6
commit 30275e60ae49f0139d8a0537dd8dc215b7fa2908
Merge: e8d66f0 81249af
Author: Eugen Konkov <>
Date: Tue Oct 25 19:57:16 2016 +0300
Merge branch 'master' into feature/5521_sign_cart_items
现在我应该使用时间机器了(谢谢你torek):
这里有冲突。现在我应该像以前一样下决心了。这是我合并的结果30275e6
git checkout 30275e6 FileTheMergeConflictWas.ext
git commit
在此之后,我切换回我的分支并合并master
git checkout my_branch
git merge master
将使用保存的分辨率。祝你好运;-) 感谢torek。我在分支机构中完成以下步骤:
git log --merges --oneline
30275e6 Merge branch 'master' into feature/5521_sign_cart_items
c28e258 Merge branch 'master' into feature/5521_sign_cart_items
f01e32c Merge branch 'master' into 5452_promocode
从第一行提取30275e6
:
$ git show 30275e6
commit 30275e60ae49f0139d8a0537dd8dc215b7fa2908
Merge: e8d66f0 81249af
Author: Eugen Konkov <>
Date: Tue Oct 25 19:57:16 2016 +0300
Merge branch 'master' into feature/5521_sign_cart_items
现在我应该使用时间机器了(谢谢你torek):
这里有冲突。现在我应该像以前一样下决心了。这是我合并的结果30275e6
git checkout 30275e6 FileTheMergeConflictWas.ext
git commit
在此之后,我切换回我的分支并合并master
git checkout my_branch
git merge master
将使用保存的分辨率。祝你好运;-) 希望合并如何解决?@TimBiegeleisen:
使用以前的解决方案
我想合并如何解决?@TimBiegeleisen:使用以前的解决方案
我想它似乎缺少了--from
这样的选项:git checkout--conflict=merge--from FileTheMergeConflictWas.ext
。因此,git
自动完成您刚才描述的所有操作。您不希望git checkout--conflict
,因为这会合并到您当前的(索引)状态。似乎缺少了--from
选项:git checkout--conflict=merge--from文件themergeconflictwas.ext
。因此,git
自动完成您刚才描述的所有操作。您不希望git签出——冲突,因为这会合并到您当前的(索引)状态。