【问题标题】:Merging branches with similar branch signatures合并具有相似分支签名的分支
【发布时间】:2019-11-27 15:52:00
【问题描述】:

我想将 master 分支合并到我的开发分支中。在我的开发分支中,我执行以下操作:

''' git pull origin master'''

当我这样做时,合并完成,但是,我注意到非常奇怪的行为。似乎master中的一个文件夹与我的分支非常相似,它将它们视为同一个文件夹。

我尝试从 master 创建一个新分支并将更改从 development 拉入 master,但它做同样的事情。它将文件夹视为相同。

例如,我有以下内容:

大师 src->文件夹1

发展 src->文件夹2

合并后得到

发展 src->文件夹1

而不是

发展 src->文件夹1 src->文件夹2

编辑:文件名大多相同,但是文件的内容根本不相同。开发是用 C++ 完成的,所以命名空间清楚地表明了谁是谁。

编辑:嘿,帮派,我尝试了这些建议,但是,git 仍在进行重命名。相反,我只是从 master 分支并引入了我需要的文件夹。现在,当我合并 master 时,它始终是最新的。谢谢大家的建议!

【问题讨论】:

  • 文件夹的内容是什么?如果文件夹包含相同的文件,它可能认为您打算重命名文件夹,因为显然没有人希望在两个不同的文件夹中有相同的文件。 ;)
  • “文件夹相似”是什么意思?您的意思是文件夹中的文件相似吗?
  • 它们的相似之处在于 90% 的文件名是相同的。话虽如此,文件的内容却大不相同。

标签: git git-merge


【解决方案1】:

我认为您的问题是由于目录重命名检测。你可以关闭它

git -c merge.directoryRenames=false pull origin master

这会保留正常的重命名检测操作。

【讨论】:

    【解决方案2】:

    我相信这里触发的功能是“重命名检测”。因为 git 只记录快照,不记录更改的意图,所以通过比较文件的内容来检测文件移动、复制和重命名。似乎在您的情况下,git 检测到的内容非常相似,以至于它可能代表了一个分支上的重命名。

    您可以禁用此行为:

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 1970-01-01
      • 2021-03-24
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 2021-08-19
      • 1970-01-01
      相关资源
      最近更新 更多