当我使用git-mv在git中移动文件时,状态显示该文件已被重命名,即使我改变了一些部分,它仍然认为是几乎相同的东西(这很好,因为它让我可以跟踪它的历史) .
当我复制文件时,原始文件有一些我想与新副本关联的历史记录.
我试过移动文件,然后尝试在原始位置重新结账 - 一旦移动git将不允许我签出原始位置.
我试过做一个文件系统副本,然后添加文件 - git将其列为新文件.
有没有办法让git记录文件复制操作的方式与记录文件重命名/移动的方式类似,历史记录可以追溯到原始文件?
Jak*_*ski 110
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
或来请求git进行复制检测copies
.请参阅git-config联机帮助页.
还要检查-l
选项git diff
和相关的配置变量diff.renameLimit
.
请注意,git log <pathspec>
在Git 中的工作方式不同:这里<pathspec>
是路径分隔符集,其中path可以是(子)目录名.在重命名和复制检测发挥作用之前,它会过滤并简化历史记录.如果要关注重命名和副本,请使用git log --follow <filename>
(目前有点限制,仅适用于单个文件).
Rob*_*lak 37
您可以强制Git检测复制文件的历史记录:
(解决方案取自/sf/answers/3082574001/.)