当我使用操作系统本机命令或 GUI 移动一些文件时,git 会丢失曲目并认为文件被删除并创建新文件!使用 gitmv
命令它的工作。但它不支持移动文件夹或通配符(是吗?
在不丢失历史记录的情况下重新组织文件和文件夹的最佳方法是什么?
Git 在设计上不记录文件重命名,而是在运行时计算文件的历史记录。其后果是没有重新组织文件/文件夹的"最佳方法";然而,不可否认的是,由于 Git 通过比较文件的内容来确定重命名,它确实具有这样的效果:如果要移动文件并修改其内容,最好有一个仅包含文件重命名的提交和另一个用于内容修改的提交。
有关与 Git 如何计算重命名相关的标志,请参阅git log
的-C
和-M
选项。
由于 git 的协议,我们如何在git commit
之前移动文件影响不大。提交实际上是所有文件的快照,并且不包含与先前提交的差异。
这意味着我们无法真正"跟踪",而必须"恢复"文件的移动。
一些 git 命令(也许还有 GUI)实际上做得很好。这是我用来列出文件更改(包括移动)的 git 命令。
$ git log --follow -- [FILES]