如果GIT不跟踪文件重命名,我们如何避免在合并中丢失这些更改?

ben*_*rre 4 svn git version-control

在我们的应用程序中,我们经常需要在发布分支上重命名文件/包,然后将此更改(以及许多其他更改)合并到主干.一个很大的问题是许多SCM解决方案(我们当前的SVN)不跟踪文件重命名.当我们将产品的发布分支合并到主干时,很容易丢失这些更改,因为SCM不够智能,不知道MyOriginalFileName和MyRenamedFileName是同一个文件/类/ etc.

在我看来,我们可能做错了什么,GIT处理这个问题的方法是什么?

Aur*_*ini 6

我相信Git可以跟踪这个.

作为一个例子,我创建了一个测试git存储库,我在其中添加了一个名为test.txt的文件并提交了它.

然后我重命名了该文件并提交了我的更改.

这是我提交的git日志:

[master cf5c827] test
1 files changed, 0 insertions(+), 0 deletions(-)
rename test.txt => test_renamed.txt (100%)
Run Code Online (Sandbox Code Playgroud)

我建议使用git-svn从svn存储库创建一个git存储库.然后你可以玩它,看看它是否满足你的需求


Jak*_*ski 5

Git 不使用重命名跟踪,但它使用基于启发式相似性的重命名检测。这意味着 Git 会比较/检查更改的文件并决定重命名,以及在解决合并期间哪些文件应匹配哪些文件。实际上,它运作得很好。

请注意,由于重命名检测算法的原因,如果您使用太简单的测试用例,它将无法工作;但在真正的合并中它应该工作得很好。