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

Git迁移仓库目录至新仓库时如何保留原目录结构(含提交历史)

解决Git迁移目录时保留原层级的问题

你遇到的问题是因为默认过滤目录后,工具会把目标目录移到仓库根目录,要保留src/main/scala的完整层级,只需要调整过滤命令即可,以下是修正后的步骤:

步骤1:克隆旧仓库并进入目录

先把旧仓库克隆到本地(已克隆可跳过):

git clone git@your-old-repo-url/repo-old.git
cd repo-old

步骤2:用git filter-repo保留完整目录层级

原教程的命令会把src/main/scala下的内容移到根目录,现在我们要保留整个路径结构,执行下面的命令:

git filter-repo --path src/main/scala --path-rename src/main/scala:src/main/scala

说明:--path指定要保留的目录,--path-rename设置前后路径一致,就是告诉工具不要修改目录结构,只保留该路径下的所有历史和完整层级。

如果你的Git版本低于2.22(没有git filter-repo),可以用旧的git filter-branch命令替代:

git filter-branch --prune-empty --index-filter '
git rm -r --cached --ignore-unmatch .
git reset $GIT_COMMIT -- src/main/scala
' HEAD

步骤3:关联新仓库并推送

本地仓库已只保留src/main/scala的完整层级和对应历史,接下来关联新仓库:

git remote add new-repo git@your-new-repo-url/repo-new.git

然后推送到新仓库(若新仓库已有内容,需确认可以覆盖后加--force):

git push new-repo main --force

验证结果

克隆新仓库到本地查看:

git clone git@your-new-repo-url/repo-new.git
cd repo-new
ls -la src/main/scala

就能看到完整的目录层级和对应的提交历史了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:39:59