使用Git重命名并移动文件至其他目录,如何保留提交历史?
Git移动文件并保留提交历史的正确操作
- 首先必须用
git mv而非系统原生mv,Git会自动记录文件的移动/重命名关联,不会丢失历史(用系统mv再手动删除旧文件、添加新文件的话,Git可能无法识别这是重命名操作)。 - 具体操作步骤:
- 先确保目标目录存在,不存在则提前创建:
mkdir -p src/my-newfolder - 在项目根目录下执行Git移动命令(用相对路径更稳妥):
git mv dist/somefile.js src/my-newfolder/index.js - 提交这个移动/重命名变更:
git commit -m "Move and rename somefile.js to src/my-newfolder/index.js" - 查看该文件的完整提交历史(包含原路径下的所有提交):
git log --follow -- src/my-newfolder/index.js
- 先确保目标目录存在,不存在则提前创建:
- 关键说明:
--follow参数的作用是让Git追踪文件的重命名记录,回溯显示原路径下的所有提交;- 命令里的
--是为了避免文件名和分支名、选项名冲突,属于稳妥写法; - 必须提交移动变更后,
--follow才能正常工作,因为Git需要提交记录来关联新旧文件。
内容的提问来源于stack exchange,提问作者david-l
相关产品推荐
相关产品推荐

