Git:相当于SVN的修复移动

Bra*_*rad 5 git

我有时会用Java修改类名.这导致我也需要修改文件名.

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

在"检查修改"视图中,选择两个文件,一个丢失,一个未版本化.当您右键单击其中一个时,可以选择"修复移动".

这将删除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"
Run Code Online (Sandbox Code Playgroud)

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

git mv一旦我手动移动文件并对文件本身进行了更改,我想我可以使用.它似乎git mv只是mv命令的包装,并将更改添加到git.

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

Bra*_*rad 4

事实证明,Git 在确定文件何时重命名方面非常聪明。

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

如果文件满足特定阈值,提交将自动将添加和删除文件更改为重命名。git add有时,一旦您创建了git rm文件,这就会出现,有时是在实际提交之后。

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

  • git 中的自动检测非常有用且聪明,但它并不完美,我相信仍然存在手动重命名/移动修复功能会很好的情况。 (8认同)