Git同仓库移动文件到新文件夹如何保留原有提交历史
Git移动文件后保留提交历史的正确方法
用git mv移动文件的操作本身没有错误,移动后查不到旧提交历史是Git默认日志规则导致的:Git底层不存储文件重命名、移动的元数据,默认查询文件日志时只会追踪当前路径下的提交,不会自动追溯路径变更前的历史。
操作说明
- 移动文件时保证操作纯净
移动文件单独做一次提交,不要在同一个commit里同时修改文件内容、操作其他无关文件,保证移动后的文件和原文件内容完全一致,让Git的相似度检测能准确识别这是同一个文件。之前执行的git mv file1 folder/file1后单独提交的操作本身是符合要求的。 - 查全量历史时加
--follow参数
执行以下命令就能看到包含移动前记录的完整提交历史:
加这个参数后,Git会追踪指定文件的所有路径变更,顺着重命名、移动的关联往前找所有相关提交,就能看到file1移动前的两条旧提交记录。git log --follow folder/file1
补充注意点
- 不要在移动文件的提交里混着改内容,一旦文件内容改动占比太高,Git会判定这是新创建的文件,就关联不上之前的提交历史了。
- 可以执行
git config --global diff.renames true全局开启重命名识别,提升Git判断重命名的准确率,但查询单文件跨路径历史时还是需要加--follow参数。
内容的提问来源于stack exchange,提问作者Nidhi Kapoor
相关产品推荐
相关产品推荐

