git仓库目录迁移操作
¶多个目录迁移到同一个新的仓库
1、克隆需要迁移的项目代码git clone git@gitlab.alibaba-inc.com:maru/maru.git
2、同步所有分支信息git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
3、筛选出需要保留的目录git filter-branch --index-filter 'git rm --cached -qr --ignore-unmatch -- . && git reset -q $GIT_COMMIT -- src public' --prune-empty -- --all
4、清理 .git
的 object
git reset --hard
git for-each-ref --format="%(refname)" refs/original/ |xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --aggressive --prune=now
5、设置 origingit remote rm origin
git remote add origin xxx.git
6、推送git push --all
¶单个目录迁移到新仓库
只需要将上面的第三步改为下面的这条命令即可:git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter src -- --all