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