【发布时间】:2011-08-26 04:13:59
【问题描述】:
- 我有一个文件,
foo.txt - 创建并签出分支“branch_A”
-
git mv foo.txt bar.txt后跟git add -A然后git commit -m "renamed foo.txt" - 结账大师,
git checkout master - 删除 foo.txt 并提交。
- 现在合并分支_A,
git merge branch_A
因此,我遇到了合并冲突(重命名/删除)。
CONFLICT (rename/delete): Rename foo.txt->bar.txt in branch_A and deleted in HEAD
这是有道理的,也是我所期望的。但是,我想知道 git merge 是否有办法 not 检测重命名,而是将它们视为已添加/已删除。在这种情况下,我希望 git 检测到 foo.txt 被删除并简单地添加 bar.txt。没有冲突。
我尝试过使用 -X rename-threshold,但它对我不起作用。我已经尝试过阈值 0 和 120(高于 100 的数字)。我错过了什么?
谢谢!
附:我也收到error: refusing to lose untracked file at... 错误。这是什么意思?
【问题讨论】:
-
error: refusing to lose untracked file at...可能是合并bar.txt的结果,在branch_A中跟踪但在master中未跟踪,假设它存在于您的工作目录中 -
使用 git 2.8(2016 年 3 月),您可以选择使用
git merge --no-renames。见my answer below -
使用 Git 2.18(2018 年第二季度),您可以选择
git config merge.renames false。见my updated answer below。