该站点上有很多关于git mv
跨名称边界检索文件的行为以及如何检索历史记录的问题。我知道 Git 实际上并没有记录文件的移动/重命名,但我并不完全理解手动这样做的问题所在。
假设我想重命名一个文件,并且我关心保持它的历史。如果我的工作流程类似于
git mv file.txt new_file.txt
<make substantial changes to new_file.txt>
git add new_file.txt
git commit -m "rename and change"
那么历史就会被打破。的输出git log --follow -- new_file.txt
将只是最近的“重命名和更改”提交。
但是,如果我改为使用类似的工作流程
git mv file.txt new_file.txt
git commit -m "rename"
<make substantial changes to new_file.txt>
git add new_file.txt
git commit -m "change"
那么看来我已经避免了休息。现在,相同日志命令的输出为我提供了“更改”、“重命名”以及file.txt
之前涉及的任何提交。
我意识到如果文件没有被大量编辑,那是多余的,因为在这种情况下,Git 会自行推断重命名。但就实际令人讨厌的问题而言,我能想到的最有可能的是某种合并冲突,而且我还没有找到比常规方式更糟糕的情况。
我的问题是:我错过了什么吗?像这样进行明确的“重命名”提交是否存在危险?