由于我经常使用的工具,我经常重命名一个文件,并在准备提交之前对其进行更改。
此时,git不再将文件检测为简单重命名,因为文件内容不同。
是否有一个命令可用于指定某个文件,实际上也是另一个文件的重命名,即使内容显示不同?
答案 0 :(得分:4)
不在Git中。 Git使用基于相似性的启发式 重命名检测 (您可能需要启用它才能查看更改:git diff -M
或git config diff.renames true
以始终使用它(或git diff -C
和git 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