更改后指定Git重命名

时间:2015-03-04 16:17:01

标签: git

由于我经常使用的工具,我经常重命名一个文件,并在准备提交之前对其进行更改。

此时,git不再将文件检测为简单重命名,因为文件内容不同。

是否有一个命令可用于指定某个文件,实际上也是另一个文件的重命名,即使内容显示不同?

3 个答案:

答案 0 :(得分:4)

不在Git中。 Git使用基于相似性的启发式 重命名检测 (您可能需要启用它才能查看更改:git diff -Mgit config diff.renames true以始终使用它(或git diff -Cgit config diff.renames copies也可以检测副本。它会动态检测重命名。

它没有重命名跟踪,并且不会在任何地方存储有关重命名的信息。


假设您没有忘记在提交中包含重命名的文件,即您使用git mv <old> <new> ...只是mv <old> <new> && git add <new>

这意味着如果您使用其他工具(例如IDE,filemanager等)重命名了文件,那么您需要git add新文件(重命名后),并删除旧文件(如果存在){{{ 1}}将其完全删除,git rm将其保存在工作目录中。

答案 1 :(得分:3)

对于git,您永远不应该在同一次提交中重命名并进行文件更改。你应该运行一个git mv oldName newName来确保git知道这是一个简单的文件移动,然后提交你的更改。

答案 2 :(得分:0)

最安全的方法是运行git mv old new并提交更改(不仅仅是暂存)。虽然这可能会打破你的构建。然后进行新的更改。

这里有一个非常好的博客和git创建者关于此主题的讨论链接(粗略)https://coderwall.com/p/_csouq/renaming-and-changing-files-in-git-without-losing-history