当我使用git-mv在git中移动文件时,状态显示该文件已被重命名,即使我改变了一些部分,它仍然认为是几乎相同的东西(这很好,因为它让我跟踪历史它)。
当我复制文件时,原始文件有一些我想与新副本关联的历史记录。
我尝试移动文件然后尝试在原始位置重新结帐 - 一旦移动git就不会让我查看原始位置。
我尝试过制作文件系统副本,然后添加文件 - git将其列为新文件。
有没有办法让git记录文件复制操作的方式与记录文件重命名/移动的方式类似,历史记录可以追溯到原始文件?
答案 0 :(得分:107)
Git不会重命名跟踪也不会复制跟踪,这意味着它不会记录重命名或复制。它的作用是重命名和复制 detection 。您可以使用git diff
选项在git show
(和-M
)中请求重命名检测,您可以使用-C
选项在-C
选项中请求更改文件中的其他副本检测1}}隐含-M
),您可以在--find-copies-harder
或-C -C
(隐含-C
的所有文件中请求更昂贵的副本检测,这意味着-M
)。请参阅git-diff联机帮助页。
您还可以配置的git总是不通过设置diff.renames
为true值重命名检测(例如true
或1
),您可以要求混帐做拷贝检测过将其设为copy
或copies
。请参阅git-config联机帮助页。
同时检查-l
的{{1}}选项以及相关的配置变量git diff
。
请注意diff.renameLimit
在Git中的工作方式不同:此处git log <pathspec>
是一组路径分隔符,其中path可以是(子)目录名。在重命名和复制检测发挥作用之前,它会过滤并简化历史。如果您想关注重命名和副本,请使用<pathspec>
(目前有点限制,仅适用于单个文件)。
答案 1 :(得分:29)
您可以强制Git检测复制文件的历史记录: