git merge不会保留移动,重命名和修改的文件之间的链接

时间:2017-06-22 09:04:08

标签: git merge

我需要在一个会大大改变项目的分支上工作。我导入一个php框架,我需要重命名,移动和修改现有文件。 我的问题是当我需要合并Master(或任何其他分支)时我的分支的可维护性。

一个例子: 在master上:dir1 / toto.php 在我的分支上,该文件变为:dir2 / dir3 / titi.php,内有修改

如果主人进化并且如果我想合并toto.php,Git将丢失与我的新文件路径(dir2 / dir3 / titi.php)的链接。因此,git merge将重新导入dir1 / toto.php,我需要手动执行本地diff ...失去所有git优势。

你有任何帮助吗? 注意:我使用php,使用git和UI。

感谢所有

纪尧姆

1 个答案:

答案 0 :(得分:1)

虽然git不跟踪文件移动,但它确实尝试识别合并期间移动的文件。它并不完美,但它做得非常好,并且有一些参数可以调整以试图说服它“看到”文件移动。

如果你想给git提供正确处理合并的最佳机会,那么当你必须移动文件并更改其内容时,将其分解为两个提交 - 一个用于移动文件而不更改它,一个用于改变它而不移动它。当一个文件消失并且其他地方出现一个完全相同的文件时,git非常擅长将其识别为“文件移动”。