2

是否可以添加您在本地修改但您不是其所有者的 git 子模块,因此无法推送到远程。目前我的 repo 只添加了一个指向原始子模块的链接,但没有我对它的修改。但我希望将包括我的修改在内的全部内容推送到我的远程仓库。

到目前为止,我做了以下事情:

cd my_repo
git submodule add git@mygithost:submodulue submodule
git submodule init && git submodule update
cd submodule
<changes, hacks>
git commit -am 'modify submodule'
cd .. && git status

> On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)

    modified:   submodule (untracked content)

no changes added to commit (use "git add" and/or "git commit -a")
4

1 回答 1

1

我希望将包括我的修改在内的全部内容推送到我的远程仓库。

您不能完全这样做,因为您无法将本地更改推送到原始子模块。但是你可以通过分叉子模块来解决这个问题。

首先,叉git@submodulehost:submoduluegit@mygithost:submodulue. 如果您不能直接在submodulehost克隆处分叉并推送:创建一个新的空存储库git@mygithost:submodulue并执行

git clone -o upstream git@submodulehost:submodulue
cd submodule
git remote add origin git@mygithost:submodulue
git push --all origin

然后使用 fork 作为子模块的源:

cd ../superproject/submodule
git remote set-url origin git@mygithost:submodulue
git remote add upstream git@submodulehost:submodulue

修复代码并将其推送到您的 fork:

git push -u origin master
于 2019-11-04T13:29:34.317 回答