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

如何将分叉项目存入同一GitHub仓库并自定义目标文件夹?

用Git子模块管理多fork项目并提交PR的方案

Git子模块完全能满足你的需求——它可以把多个独立的fork项目作为子目录嵌套在你预先创建的forked_projects仓库里,既保持每个项目的独立版本控制,又能统一管理所有fork项目。下面是具体的操作步骤:

操作步骤

  1. 先完成目标项目的fork
    要提交PR的前提是先把目标项目fork到你自己的GitHub账号下,后续子模块要引用你自己fork后的仓库地址,而非原项目地址。

  2. 初始化主仓库(如果还没完成)

    • 克隆你自己的forked_projects仓库到本地:
      git clone https://github.com/你的GitHub账号/forked_projects.git
      
    • 进入仓库目录:
      cd forked_projects
      
  3. 添加子模块
    用你自己fork后的仓库URL添加子模块,命令格式如下:

    git submodule add https://github.com/你的GitHub账号/目标项目名.git 本地存储目录名
    

    比如你要添加repository1,就执行:

    git submodule add https://github.com/你的GitHub账号/repository1.git repository1
    

    执行后Git会自动生成/更新.gitmodules文件,和你之前写的格式一致,无需手动修改。

  4. 提交子模块配置到主仓库
    把新增的子模块配置提交到forked_projects仓库:

    git add .gitmodules repository1
    git commit -m "添加repository1作为子模块"
    git push
    
  5. 修改子模块并提交PR
    每个子模块都是独立的Git仓库,修改流程和普通仓库一致:

    • 进入子模块目录:
      cd repository1
      
    • 切换到主分支(比如main):
      git checkout main
      
    • 做代码修改,然后提交到你自己fork的仓库:
      git add .
      git commit -m "修复xxx问题"
      git push origin main
      
    • 之后去GitHub上你fork的repository1页面,点击「Pull request」按钮,向原项目提交PR即可。
  6. 更新主仓库的子模块引用
    当子模块的代码有更新(比如你提交PR后原项目合并了,或者你在其他地方修改了子模块),可以在主仓库目录执行以下命令同步最新版本:

    git submodule update --remote repository1
    

    然后提交更新后的子模块版本到主仓库:

    git add repository1
    git commit -m "同步repository1的最新版本"
    git push
    

注意事项

  • 子模块必须引用你自己fork后的仓库地址,不能用原项目地址,否则你没有权限推送修改。
  • 克隆包含子模块的forked_projects仓库时,建议加上--recurse-submodules参数,一次性拉取所有子模块代码:
    git clone --recurse-submodules https://github.com/你的GitHub账号/forked_projects.git
    
    要是已经克隆了主仓库,也可以执行git submodule init && git submodule update拉取子模块代码。
  • 主仓库只记录子模块当前的commit哈希值,子模块的实际代码存储在各自的仓库中,两者版本控制是独立的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:40:18