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

如何将含client/server的GitHub仓库拆分为两个独立仓库并保留提交历史

使用git filter-repo拆分仓库并保留提交历史

前置准备

  • 克隆原仓库到本地(确保拉取完整提交历史):
    git clone <原仓库的GitHub地址>
    cd <克隆后的仓库目录>
    
  • 安装git filter-repo工具:根据系统选择对应命令,比如 macOS 用brew install git-filter-repo,Debian/Ubuntu 用sudo apt install git-filter-repo。

拆分client为独立仓库

  1. 复制原仓库目录作为client的工作副本(防止影响后续server的拆分操作):
    cp -r <原仓库目录> ./client-repo
    cd ./client-repo
    
  2. 执行filter-repo命令,保留仅与client文件夹相关的提交,并将client内的文件移到仓库根目录:
    git filter-repo --path client/ --path-rename client/:
    
  3. 在GitHub创建一个新的空仓库(命名为client),更新本地仓库的远程地址并推送:
    git remote set-url origin <新client仓库的GitHub地址>
    git push -u origin main
    

拆分server为独立仓库

  1. 回到原仓库目录,复制一份作为server的工作副本:
    cp -r <原仓库目录> ./server-repo
    cd ./server-repo
    
  2. 执行filter-repo命令,保留仅与server文件夹相关的提交,并将server内的文件移到仓库根目录:
    git filter-repo --path server/ --path-rename server/:
    
  3. 在GitHub创建新的空server仓库,更新远程地址并推送:
    git remote set-url origin <新server仓库的GitHub地址>
    git push -u origin main
    

删除原主仓库

  • 确认两个新仓库的提交历史、文件内容都无误后,进入原仓库的GitHub页面,在「Settings」中找到「Delete this repository」选项完成删除。
  • 本地的原仓库目录可直接删除。

注意事项

  • 操作前务必备份原仓库,避免数据丢失。
  • 如果原仓库存在多个分支,需要对每个分支重复上述filter-repo操作,或者在命令中通过--branches参数指定要处理的分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:26:02