You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Git仓库中移动文件至新位置且不丢失提交历史?

把Git根目录文件移到src且保留提交历史的正确做法

别碰.git/index!用标准git mv流程就行

手动修改Git的内部索引文件很容易搞乱仓库状态,完全没必要。按下面的步骤来:

  1. 先建src文件夹(没建的话):
    mkdir src
    
  2. 移动文件到src:
    • 如果你用Linux/macOS终端,一次性移走根目录非Git相关文件:
      git mv !(README.md|.git) src/
      
    • 要是Windows命令行不支持上面的语法,就挨个指定文件,或者用PowerShell:
      Get-ChildItem -Exclude .git,README.md | Move-Item -Destination src
      git add .
      
  3. 提交这次移动操作:
    git commit -m "迁移所有源码文件到src目录"
    
    提交完后用git log --follow -- 文件名就能看到该文件从根目录到src的完整历史了,普通git log只会显示旧路径,这就是你之前误以为历史没关联的原因。

关于git rm --cache的正确用法

你之前执行报错是因为没指定要清除缓存的文件路径,正确写法是git rm --cache 具体文件名,但这个操作在当前场景里根本用不上,别瞎试。

要是已经手动改了索引文件的补救办法

如果之前手动编辑过.git/index导致仓库状态不对,先重置索引回到正常:

git reset HEAD

然后重新走上面的git mv流程就行。

内容的提问来源于stack exchange,提问作者user16316067

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:09:56