Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 当稍后的提交解决了冲突时,如何避免在重基期间发生冲突?_Git_Rebase_Tree Conflict - Fatal编程技术网

Git 当稍后的提交解决了冲突时,如何避免在重基期间发生冲突?

Git 当稍后的提交解决了冲突时,如何避免在重基期间发生冲突?,git,rebase,tree-conflict,Git,Rebase,Tree Conflict,在git中,如何轻松地重新设置分支的基础,使其具有在重新设置基础结束时已经修复的冲突 例如,我在一个功能分支上,在主分支中有2个提交用于重基 第一次提交会产生冲突,但如果rebase将两次提交合并在一起,那么在第二次提交之后就不会有冲突 那么,如何将其作为一个整体重新定位,而不是一个接一个地重新定位并两次解决冲突呢 我想一定有人在什么地方回答了,但我什么也找不到,因为所有类似的问题标题都很模糊 最好的方法是先挤压两个提交(通过使用交互式重新基址),然后在主机上重新基址 通过交互式重基挤压最后2次

在git中,如何轻松地重新设置分支的基础,使其具有在重新设置基础结束时已经修复的冲突

例如,我在一个功能分支上,在主分支中有2个提交用于重基
第一次提交会产生冲突,但如果rebase将两次提交合并在一起,那么在第二次提交之后就不会有冲突
那么,如何将其作为一个整体重新定位,而不是一个接一个地重新定位并两次解决冲突呢


我想一定有人在什么地方回答了,但我什么也找不到,因为所有类似的问题标题都很模糊

最好的方法是先挤压两个提交(通过使用交互式重新基址),然后在主机上重新基址

  • 通过交互式重基挤压最后2次提交:

    git rebase -i head~2
    
    为第二次提交选择挤压(或修复)

  • 然后在master上重新设置基础

    git rebase master
    
  • 在你重新定位到master之前,你应该有疑问。通过在最新的共同祖先上的交互式重基执行此操作:

    git rebase -i $(git merge-base master HEAD)
    
    这样,组合提交(当表示为补丁时)可以干净地应用于
    master

    git rebase master
    

    您试图应用于master的最初提交将发生冲突,简单明了。一旦“状态”完成,您必须能够检查它,所以Git会让您解决冲突。您的基本问题归结为“如何应用包含冲突的修补程序而不创建冲突”,这显然是您无法做到的。通过首先挤压提交,您就不需要应用冲突提交。

    最后它更加复杂,我需要使用基于范围的cherry pick,而不是rebase,我应该选择哪个答案?两个答案都有点相同。樱桃采摘也是一样,首先是南瓜。如果这太难了,您可以选择合并(不需要挤压);)