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

如何使用git subtree从子目录创建新仓库并实现上游同步

使用Git Subtree从父仓库子目录创建独立仓库并同步变更

一、初始创建新仓库

假设父仓库地址为<父仓库Git地址>,目标子目录为subdir,新仓库命名为new-repo,按以下步骤操作:

  • 创建并初始化本地新仓库:

    mkdir new-repo && cd new-repo
    git init
    
  • 添加父仓库为远程上游源:

    git remote add parent <父仓库Git地址>
    git fetch parent
    
  • 导入父仓库目标子目录到新仓库根目录:

    git subtree add --prefix=./ parent main --squash
    

    说明:

    • --prefix=./ 指定将父仓库的subdir内容导入到新仓库根目录;若想放到新仓库的某个子目录,可改为--prefix=目标子目录名
    • main 是父仓库的目标分支,根据实际情况替换(如master)
    • --squash 会把父仓库的相关历史压缩为单个提交,避免新仓库历史过于冗长;若需要保留完整历史,可移除该参数
  • 将新仓库推送到远程托管服务器(若有):

    git remote add origin <新仓库Git地址>
    git push -u origin main
    

二、定期同步父仓库子目录的变更

当父仓库的subdir有更新时,按以下步骤同步到新仓库:

  • 拉取父仓库最新代码:

    git fetch parent
    
  • 同步父仓库子目录的变更到本地新仓库:

    git subtree pull --prefix=./ parent main --squash
    

    注意:若初始导入时未使用--squash,此处也需移除该参数,保持历史处理方式一致;若出现冲突,解决冲突后执行git commit完成同步。

  • 将同步后的代码推送到新仓库的远程服务器:

    git push origin main
    

额外说明

  • 若后续需要将新仓库的变更推回父仓库的对应子目录,可执行:
    git subtree push --prefix=./ parent main
    
  • 同步前确保本地工作区处于干净状态,避免冲突处理复杂化;若父仓库子目录路径变更,需同步调整命令中的路径配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:20:27