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

为Git子模块添加pushurl失败的问题求助

解决子模块推送至私有仓库的问题

让我来帮你搞定这个子模块推送的麻烦!你遇到的问题核心是:子模块默认关联的是上游AUR仓库,即便改了pushurl,也需要确保子模块的修改已经提交到你自己的分支,并且远程配置正确指向你的仓库。咱们一步步来:

1. 进入子模块目录,检查远程配置

首先切换到子模块文件夹里,看看当前的远程仓库设置:

cd gnome-keyring-query
git remote -v

你大概率会看到只有上游AUR仓库的fetch地址,push地址要么没有,要么还是指向AUR(你没权限推的)。

2. 配置子模块的推送远程

这里有两种方式,选你方便的:

  • 方式一:修改现有origin的push地址(保持fetch还是上游,push到你的仓库)
    git remote set-url --push origin 你的仓库地址
    
  • 方式二:新增一个专属远程仓库(比如叫myrepo)
    git remote add myrepo 你的仓库地址
    

3. 确保子模块处于可用分支(避免detached HEAD)

子模块默认克隆后通常处于detached HEAD状态(只指向某个commit,没有关联分支),这种状态没法直接推送。所以先创建并切换到你自己的分支:

git checkout -b my-custom-branch  # 分支名可以自定义,比如my-feature

4. 提交子模块里的修改

把新增的Makefile提交到子模块的本地仓库:

git add Makefile
git commit -m "Add custom Makefile"

5. 推送子模块修改到你的仓库

根据你之前选的方式来推送:

  • 如果是修改了origin的pushurl:
    git push origin my-custom-branch
    
  • 如果是新增了myrepo远程:
    git push myrepo my-custom-branch
    

6. 更新主仓库的子模块引用

回到主仓库,因为子模块的HEAD已经更新,你需要把这个新的子模块状态提交到主仓库:

cd ..  # 回到主仓库根目录
git add gnome-keyring-query
git commit -m "Update submodule: add custom Makefile"
git push  # 推送主仓库的修改

为什么之前的操作没生效?

你修改.gitmodules和.git/modules/.../config的思路是对的,但可能缺了关键步骤:

  • 子模块处于detached HEAD状态,没有可推送的分支;
  • 没有先在子模块里提交Makefile的修改,直接推送自然没内容可推;
  • 可能pushurl配置后,你没有切换到子模块目录执行推送,而是在主仓库操作(主仓库没法直接推子模块的内容)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:06:40