文章

GitHub中Fork的仓库中有子模块引用如何解决

GitHub中Fork的仓库中有子模块引用如何解决

在GitHub上,当你fork一个仓库时,默认情况下只会复制该仓库的代码,而不会自动fork其引用的子模块(submodule)或其他依赖的模块。如果你需要同时fork这些子模块,你需要手动进行一些操作。以下是详细的步骤:

步骤一:Fork 主仓库

  1. 前往你想要fork的主仓库页面。
  2. 点击右上角的 “Fork” 按钮,将主仓库fork到你的账号下。

步骤二:克隆你的Fork

  1. 在你的GitHub账号下找到刚刚fork的仓库。
  2. 复制该仓库的SSH或HTTPS克隆地址。
  3. 在本地终端中执行以下命令克隆仓库:
    1
    
    git clone <克隆地址>
    

步骤三:初始化并更新子模块

  1. 进入克隆下来的仓库目录:
    1
    
    cd <仓库名称>
    
  2. 初始化子模块:
    1
    
    git submodule update --init --recursive
    

    这条命令会根据.gitmodules文件中的配置,初始化并克隆所有子模块。

步骤四:Fork 子模块

  1. 进入每个子模块的目录:
    1
    
    cd path/to/submodule
    
  2. 在GitHub上找到该子模块的原始仓库,手动点击 “Fork” 按钮将其fork到你的账号下。
  3. 回到本地终端,将子模块的远程仓库地址修改为你的fork地址:
    1
    
    git remote set-url origin <你的fork地址>
    

步骤五:更新主仓库的子模块引用

  1. 回到主仓库的目录:
    1
    
    cd ../..
    
  2. 编辑.gitmodules文件,将子模块的URL更新为你的fork地址。
  3. 提交更改并推送到你的远程仓库:
    1
    2
    3
    
    git add .gitmodules
    git commit -m "Update submodule URLs to my forks"
    git push origin main
    

步骤六:在本地更新子模块

  1. 再次更新子模块以确保所有引用都正确:
    1
    
    git submodule update --remote
    
本文由作者按照 CC BY 4.0 进行授权