2013-03-16 164 views
1

我在分支master的git存储库中创建了一个文件foo如何在文件重命名后合并两个不同文件

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

在分支dev上,我使用git mv foo bar将它重命名为bar

之后,我改变foo中的内容并提交它。

但是,当我结帐分支devgit merge master混帐不会自动合并它为我,并要求我合并它自己。

那么,foobar的祖先我执行git mv之后呢?有什么办法让git自动合并?

+0

'foo'不是'bar'的祖先,因为git不会跟踪重命名,它只跟踪文件内容。 – wRAR 2013-03-16 11:27:35

+0

谢谢。我会尝试'''hg''',因为它支持跟踪重命名。 @wRAR – rAy 2013-03-16 12:10:19

+0

@wrar它可能不会跟踪重命名,但'git-merge-recursive'肯定会通过与祖先的相似性来检测它们。 – 2013-03-16 13:06:34

回答

1

正如在 “git merge with renamed files” 所提到的,你应该尝试并适应重命名门槛:

由于git的1.7.4,您可以指定合并重命名阈值

为了控制25%的相似度已经足以考虑两个文件重命名候选者。
这个,根据情况加上-X ignore-space-change可能会使重命名检测更可靠。

Tilman Vogel

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