5

我有时会修改 Java 中的类名。这导致我也需要修改文件名。

为了维护 SVN 中文件的历史记录,我使用 TortoiseSVN 中的一个名为 Repair Move 的工具。

在 Check for Modifications 视图中,您选择两个文件,一个丢失,一个未版本化。当您右键单击其中一个时,可以选择修复移动。

这将删除 SVN 中的旧文件并添加新文件,同时附加旧文件的历史记录。这样,当您 svn log 时,您可以看到自文件名更改之前以来的整个历史记录。

git 有等效的命令吗?从我读过的工作流程看来,我应该执行以下操作:

git mv <old filename> <new filename>
# Make the class name changes to reflect the filename change. 
git commit -a -m "Changed filename from Foo.java to Bar.java"

这似乎是一个很长的路要走。

git mv我认为一旦我手动移动了文件并对文件本身进行了更改,我就可以使用了。似乎这git mv只是mv命令的包装器以及将更改添加到 git。

有没有办法在移动发生后通知 git 移动的文件?

4

1 回答 1

4

事实证明,Git 在重命名文件时非常聪明。

当您提交已删除的文件和新文件时,会比较两个文件的内容是否相似。

如果文件达到某个阈值,则提交将自动将添加和删除文件更改为重命名。有时这会在你git addgit rm文件之后出现,有时在实际提交之后。

例如,当文件名或包名发生变化时,Java 文件会发生轻微变化。Git 比较删除文件和添加文件的内容,发现它们大部分相同并将其标记为重命名文件。

于 2013-03-20T06:25:33.563 回答