我的文件正在某个分支上编辑,在我的分支中我将其名称与其他文件交换。 Git将报告两个文件的合并冲突并产生错误的diff
。
在每次合并之前,是否可以避免重复下面的结果?
$ git diff master
diff --git a/old.txt b/old.txt
index 7b4dc35..e73e0b4 100644
--- a/old.txt
+++ b/old.txt
@@ -1,4 +1,2 @@
-This is an old file.
-A Corrected Text again.
-More Text.
+This is a second file.
+Do not confuse with original.
diff --git a/old2.txt b/old2.txt
index e73e0b4..8f51c7b 100644
--- a/old2.txt
+++ b/old2.txt
@@ -1,2 +1,4 @@
-This is a second file.
-Do not confuse with original.
+This is an old file.
+A Corrected Text.
+More Text.
答案 0 :(得分:2)
简短的回答是" no",因为git使用了重命名检测算法。
通常,在将一个提交与另一个提交进行比较时,diff会这样做:
当您直接使用git diff
时,您有一堆配置项和标志来控制应用的检测量,因为它是:diff.renameLimit
,-M
,{{1} },特别是-C
。
当您使用--find-copies-harder
默认(递归)策略时,git会将这些设置为通常运行良好的默认值。有一些(更少)控件可以调整它们:git merge
和merge.renameLimit
。 1 Git将这些应用于内部运行的两个-X rename-threshold=...
以便设置合并。
当然,问题在于所有情况下都适用第一个项目符号(具有相同名称的文件不被视为重命名候选者,有时仅作为候选副本)。因此,Git不会将这些视为重命名。
1 即使这些选项有点新:我记得合并时只是硬编码。也许您可以教导diff和merge以允许在两次提交中都存在文件名的情况下进行重命名检测。 (两者都在git中使用相同的底层diff代码,并使用控制各种选项的数据结构。)