在Android Studio中将文件(使用Git进行跟踪)从Java转换为Kotlin

在Android Studio 2.3.2中从Java到Kotlin的转换(在3.0中是相同的行为)创建一个新文件并删除以前的文件。 所以Git不知道这个转换。 而git的历史不会保存。 在Intellij Idea中一切都很好。 IDE只是重命名文件,并保存历史记录。 在Android Studio中如何做到这一点。

Git会根据添加/删除的文件对来重新命名,但是只有当这些文件足够接近时,也就是说,如果文件被重命名为没有或者少量的更改。

当你应用java-to-kotlin转换的时候,通常文件的每一行都会改变,这样git就不会发现这些新旧文件之间有某种联系。

您可以使用以下两个阶段的方法:

  • 只需将.java文件的扩展名改为.kt并提交;
  • 重命名它,应用转换并提交修改后的.kt文件。

Git实际上并不直接跟踪重命名; 它根据文件添加/删除对来推断它们。 我认为Idea在重命名时正在运行一个git add ,而Android Studio只是删除旧的文件。 尝试运行git add新文件和旧文件的git rm ,Git应该将它们显示为重命名。

正如在其他答案中提到的,git跟踪文件的内容,而不是重命名。 当使用--follow选项运行git log ,它会显示超出重命名的历史记录,但是,只有当前和当前文件内容的相似度指数为50%或更多,即小于该文件已经改变。

对于这种情况,大多数行已更改,您可以使用-M选项设置相似性指数的较低的栏:

 git log -M20% --follow -- /path/to/file 

根据情况,你可能需要甚至低于20%。