foo.txtgit mv foo.txt bar.txt其次git add -A则git commit -m "renamed foo.txt"git checkout mastergit merge branch_A有了这个,我得到一个合并冲突(重命名/删除).
CONFLICT (rename/delete): Rename foo.txt->bar.txt in branch_A and deleted in HEAD
Run Code Online (Sandbox Code Playgroud)
这是有道理的,也是我所期待的.但是,我想知道git merge是否有办法不检测重命名,而是将它们视为添加/删除.在这种情况下,我希望git能够检测到foo.txt已被删除,只需添加bar.txt即可.没有冲突.
我尝试过使用-X rename-threshold,但它对我没用.我已经尝试过阈值0和120(高于100的数字).我错过了什么?
谢谢!
PS我也遇到了error: refusing to lose untracked file at...错误.这是什么意思?
你可以尝试:
git merge -s resolve branch_A
Run Code Online (Sandbox Code Playgroud)
此外,您是否尝试过在此处查看类似问题:
使用git 2.8(2016年3月),您将有另一个选项(作为递归合并策略的一个选项)
git merge -Srecursive -Xno-renames
Run Code Online (Sandbox Code Playgroud)
见提交44c74ec,提交2307211,提交63651e1(2016年2月24日),提交2307211,提交63651e1(2016年2月24日),提交87892f6,提交83837ec(2016年2月21日),以及提交1b47ad1,提交d2b11ec(2016年2月17日)由菲利普GonçalvesAssis(asiz).
(由Junio C gitsterHamano合并- -在提交4ce064d,2016年2月26日)
merge-recursive:禁用重命名的选项递归策略默认启用重命名检测.
添加策略选项以禁用重命名检测,即使是精确重命名也是如此.
该男子git-merge将包括:
Run Code Online (Sandbox Code Playgroud)no-renames关闭重命名检测.
见git diff --no-rename.
(注意,如提交1b47ad1中所示,find-renames合并策略,在git diff接口之后,使选项rename-threshold从git 2.8开始冗余)
你有一个额外的设置与Git 2.18(2018年第二季度):merge.renames配置设置为false,可以告诉递归合并策略不要花费周期试图找到重命名的路径并相应地合并它们.
请参阅Ben Peart()提交6f10a09,提交85b4603,提交a7152e9(2018年5月2日).(由Junio C Hamano合并- -在提交6e2ba77,2018年5月30日)benpeart
gitster
merge:添加merge.renames配置设置添加通过配置设置控制合并重命名检测的功能.
此设置的行为相同,默认值为diff.renames但仅适用于合并.