如何用Git记录文件复制操作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (52)

当我在git中使用git-mv移动文件时,状态显示文件已被重命名,即使我更改了它仍然认为几乎相同的部分(这很好,因为它允许我跟踪它的历史)。

当我复制一个文件时,原始文件有一些历史记录,我想将其与新副本关联起来。

我已经尝试移动文件,然后尝试重新签出在原来的位置-一旦移动git将不让我签出原来的位置。

我尝试过复制一个文件系统,然后添加文件-git将其作为一个新文件列出。

是否有任何方法可以使git记录文件副本操作,其方式类似于它如何记录文件重命名/将历史记录追溯到原始文件的位置?

提问于
用户回答回答于

Git不重命名跟踪或复制跟踪,这意味着它不记录重命名或复制。相反,它所做的是重命名和复制。git diff(和git show)使用-M选项,可以使用-C选项(-C暗示-M),可以在以下所有文件中请求更昂贵的副本检测:--find-copies-harder

还可以将git配置为始终通过设置重命名检测。diff.renames为布尔真值(例如,true1),也可以通过将git设置为copycopies。

用户回答回答于

可以强制Git检测复制文件的历史记录:

  • 而不是复制,切换到一个新的分支和移动文件到它的新位置。
  • 切换到原始分支并重命名文件。
  • 将新分支合并到原始分支中,通过保留两个文件来解决琐碎的冲突。
  • 在单独提交中还原原始文件名。

扫码关注云+社区