为什么git要合并我没有修改过的东西?

为什么git要合并我没有修改过的东西?,git,Git,我对git合并有一个问题,它说文件更改和重命名操作之间存在冲突。分支是这样做的: 基础->更多设计 更多设计中的几个变化 更多\u设计->固定\u工具栏 修复了工具栏的最小更改(PNG文件中没有更改) 在更多设计中修改PNG文件 将更多设计重设为基础(PNG文件中无更改) 尝试从固定工具栏合并(git对PNG文件感到困惑) 错误示例: Auto-merging ui-app/css/images/icons-retina/item-unselected.png CONFLICT (add/add

我对git合并有一个问题,它说文件更改和重命名操作之间存在冲突。分支是这样做的:

  • 基础->更多设计
  • 更多设计中的几个变化
  • 更多\u设计->固定\u工具栏
  • 修复了工具栏的最小更改(PNG文件中没有更改)
  • 在更多设计中修改PNG文件
  • 将更多设计重设为基础(PNG文件中无更改)
  • 尝试从固定工具栏合并(git对PNG文件感到困惑)
  • 错误示例:

    Auto-merging ui-app/css/images/icons-retina/item-unselected.png
    CONFLICT (add/add): Merge conflict in ui-app/css/images/icons-retina/item-unselected.png
    CONFLICT (rename/delete): ui-app/css/images/icons-retina/item-selected.png deleted in HEAD and renamed in fixed_toolbar. Version fixed_toolbar of ui-app/css/images/icons-retina/item-selected.png left in tree.
    
    当我尝试接受我们的版本时,它说没有这样的版本(但它们肯定在分支中):

    重设基础和合并不要混合 永远不要从可能被重定基址的东西上分支,和/或永远不要从任何可能被分支的东西上重定基址

    你有过这样的经历:

    base - b1 - b2 - b3 - 
      \               \
       \              more_design' - m1' - m2' - m3' - m4' >?
        \                                               ..
        more_design - m1 - m2 - m3 - m4              ..  
                            \                      ..
                            fixed_toolbar - f1 - f2
    
    上面的重新定基
    more\u design
    创建了历史的全新版本。取代m1..m4,您现在有m1'..m4'。就git而言,这些是完全不同的修订。所以最近的共同祖先是base!因此,“本地”变化为m1'+m2'+m3'+m4',“远程”变化为m1+m2+f1+f2。因为m3'和m4'覆盖了m1和m2的变化,所以会产生冲突

    解决方案是将fixed_工具栏重设到重设基址的more_设计分支上。或者作为

    git checkout fixed_toolbar
    git rebase --onto more_design original_more_design
    
    或者,如果git无法识别m1和m2版本,则使用交互式合并并手动删除它们;它通常会:

    git checkout fixed_toolbar
    git rebase -i more_design
    
    只有合并。或在固定工具栏中拾取更改;最近的git应该理解

    git cherry-pick original_more_design..fixed_toolbar
    
    重设基础和合并不要混合 永远不要从可能被重定基址的东西上分支,和/或永远不要从任何可能被分支的东西上重定基址

    你有过这样的经历:

    base - b1 - b2 - b3 - 
      \               \
       \              more_design' - m1' - m2' - m3' - m4' >?
        \                                               ..
        more_design - m1 - m2 - m3 - m4              ..  
                            \                      ..
                            fixed_toolbar - f1 - f2
    
    上面的重新定基
    more\u design
    创建了历史的全新版本。取代m1..m4,您现在有m1'..m4'。就git而言,这些是完全不同的修订。所以最近的共同祖先是base!因此,“本地”变化为m1'+m2'+m3'+m4',“远程”变化为m1+m2+f1+f2。因为m3'和m4'覆盖了m1和m2的变化,所以会产生冲突

    解决方案是将fixed_工具栏重设到重设基址的more_设计分支上。或者作为

    git checkout fixed_toolbar
    git rebase --onto more_design original_more_design
    
    或者,如果git无法识别m1和m2版本,则使用交互式合并并手动删除它们;它通常会:

    git checkout fixed_toolbar
    git rebase -i more_design
    
    只有合并。或在固定工具栏中拾取更改;最近的git应该理解

    git cherry-pick original_more_design..fixed_toolbar
    

    您的冲突出现在“未选定项目”和“已选定项目”中。签出命令会抱怨项目取消和项目折叠。如果您在命令行上传递的是checkout命令,为什么它不会抱怨呢?请记住,通配符是通过查看文件系统中的文件而不是git中的文件来扩展的。对不起,这些只是实际冲突的PNG文件长列表中的片段。请放心,所有这些错误行都会出现在所有文件中(我将更新问题以选择更好的行)。您的冲突在“未选择项”和“已选择项”中。签出命令会抱怨项目取消和项目折叠。如果您在命令行上传递的是checkout命令,为什么它不会抱怨呢?请记住,通配符是通过查看文件系统中的文件而不是git中的文件来扩展的。对不起,这些只是实际冲突的PNG文件长列表中的片段。请放心,所有这些错误行都会出现在所有文件中(我会更新问题以选择更好的行),明白了吗。为了应用这些更改,我可以进入fixed_工具栏,为我知道的新修订创建一个补丁,然后将它们应用到我的重基分支中。明白了。为了应用更改,我可以进入fixed_工具栏,为我知道的新修订创建补丁,然后将它们应用到我的重定基础分支中。