Git 重命名文件后如何合并两个不同的文件

Git 重命名文件后如何合并两个不同的文件,git,Git,我在branchmaster上的git存储库中创建了一个文件foo 然后,我使用git checkout-b dev创建了一个新的分支dev 在分支dev上,我使用gitmvfoobar将其重命名为bar 在那之后,我在foo中更改一些内容并提交它 但是,当我签出分支dev和git merge master时,git不会自动为我合并它,并要求我自己合并它 那么,在我执行gitmv之后,foo是bar的祖先吗?有没有办法让git自动合并?如“”中所述,您应该尝试调整重命名阈值: 从Git1.7.4

我在branch
master
上的git存储库中创建了一个文件
foo

然后,我使用git checkout-b dev创建了一个新的分支
dev

在分支
dev
上,我使用
gitmvfoobar
将其重命名为
bar

在那之后,我在
foo
中更改一些内容并提交它

但是,当我签出分支
dev
git merge master
时,git不会自动为我合并它,并要求我自己合并它

那么,在我执行
gitmv
之后,
foo
bar
的祖先吗?有没有办法让git自动合并?

如“”中所述,您应该尝试调整重命名阈值:

从Git1.7.4开始,您可以将合并的重命名阈值指定为

为了控制25%的相似性已经足够考虑两个文件重命名候选。 这取决于具体情况,再加上

-X ignore space change
,可能会使重命名检测更加可靠


尽管如此,当合并没有检测到重命名时,脚本可以帮助恢复两个文件之间的关联(一个是另一个的重命名版本)。

foo
不是
bar
的祖先,因为git不跟踪重命名,它只跟踪文件内容。谢谢。我将尝试
hg
,因为它支持跟踪重命名@wRAR@wrar它可能不会跟踪重命名,但git merge recursive肯定会通过与祖先的相似性来检测它们。
git merge -X rename-threshold=25