Answers:
Git不会进行重命名跟踪或复制跟踪,这意味着它不会记录重命名或复制。相反,它所做的是重命名和复制检测。您可以使用选项在git diff(和git show)中请求重命名检测-M,可以使用-C选项(-C隐含-M)请求更改文件中的其他副本检测,还可以在所有文件中使用--find-copies-harder或进行更昂贵的副本检测-C -C(这意味着-C,这意味着-M)。请参见git-diff联机帮助页。
您还可以配置GIT中经常做重命名检测设置diff.renames为true值(如true或1),您可以要求混帐将其设置为做拷贝检测过copy或copies。请参见git-config手册页。
还要检查和相关配置变量的-l选项。git diffdiff.renameLimit
请注意,它git log <pathspec>在Git 中的工作方式不同:这<pathspec>是一组路径分隔符,其中path可以是(子)目录名称。在重命名和复制检测开始发挥作用之前,它可以过滤和简化历史记录。如果要遵循重命名和副本,请使用git log --follow <filename>(当前受限制,并且仅适用于单个文件)。
git log -L123,456:file.xyz)正确地跟随重命名,但不能复制,在这种情况下,您不能传递--follow;同样,AFAICT,这不适用于git blame。
                    2020-05-19:以下解决方案的优点是不更改原始文件的日志,不创建合并冲突且更短。
您可以强制Git通过三次提交来检测复制文件的历史记录:
--no-ff。(版权归Raymond Chen所有。)
前一个解决方案有四个提交:
move和之间有什么区别rename?
                    mv这两种操作吗?对于可能涉及更改文件目录的情况,我使用了“移动”,对于没有更改的情况,我使用了“重命名”。
                    git mv orig new?“阅读原件”是什么意思cp new orig && git add orig?
                    
diff.renames为copies(例如'git config diff.renames copies')。我同意这有点违反直觉。