我想将master分支合并到我的开发分支中。在开发分支中,我执行以下操作:
'''git pull origin master'''
当我这样做时,合并完成,但是,我注意到行为很奇怪。似乎master中的文件夹与我的分支是如此相似,它将它们视为相同的文件夹。
我尝试从master创建一个新分支,并将开发中的更改引入master,但是它做同样的事情。它将文件夹视为相同。
例如,我有以下内容:
大师 src-> folder1
发展 src-> folder2
合并后,我得到
发展 src-> folder1
代替
发展 src-> folder1 src-> folder2
编辑:文件名几乎是相同的,但是,文件的内容根本不相同。开发是用C ++完成的,因此名称空间可以清楚地说明谁是谁。
编辑:嗨,帮派,我尝试了建议,但是git仍在重命名。取而代之的是,我只是从master分支出来,并带来了所需的文件夹。现在,当我合并master时,它始终是最新的。感谢您的所有建议!
答案 0 :(得分:2)
我相信此处要触发的功能是“重命名检测”。由于git仅记录快照,而不记录更改的意图,因此通过比较文件内容来检测文件移动,复制和重命名。在您的情况下,git似乎检测到的内容非常相似,以至于它可能表示一个分支或另一个分支上的重命名。
您可以禁用此行为:
no-renames
strategy option的git pull
在单个-X no-renames
调用中mergerenames
config option设置为false
来进行检出或安装答案 1 :(得分:0)
我相信您的问题是由于目录重命名检测引起的。您可以使用
将其关闭git -c merge.directoryRenames=false pull origin master
这使得正常的重命名检测仍然有效。