由于我通常使用的工具,我经常在准备提交之前重命名文件并对其进行更改。
此时,git不再将该文件检测为简单的重命名,因为文件内容已经发生了变化。
是否有一条命令可以指定某个文件实际上也是另一个文件的重命名,即使内容看起来不同?
此时,git不再将该文件检测为简单的重命名,因为文件内容已经发生了变化。
是否有一条命令可以指定某个文件实际上也是另一个文件的重命名,即使内容看起来不同?
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、文件管理器等)重命名了文件,则需要git add
新文件(重命名后),并删除旧文件(git rm
完全删除,git rm --cached
保留在工作目录中)。
对于git,你不应该在同一个提交中重命名和修改文件。你应该运行git mv oldName newName
来确保git知道这只是一个文件的简单移动,然后提交你的更改。
最安全的方法是运行git mv old new
并提交更改(不仅仅是暂存)。虽然这可能会破坏您的构建。然后进行新的更改。
这里有一个非常好的博客和一个关于这个主题的Git创建者的讨论链接(粗略)https://coderwall.com/p/_csouq/renaming-and-changing-files-in-git-without-losing-history
git mv
进行重命名吗?在这种情况下,git status
应该告诉你已经重命名并修改了文件。 - Jan