在带有子模块的 git 分支中工作并直接从该分支提交

Working in a git branch with submodules and commiting directly from that branch

我在我的分支机构工作,我需要一个外部子模块,所以我从项目的根开始。

git submodule add https://github.com/blah/blah ./location/submodue
Cloning into ...
...
git commit -am "Added submodule"

这似乎奏效了,我能够在主分支上继续工作,在工作时我发现子模块中有一个错误,所以我直接在其中进行了更改。

但是当我做了一个git add . no changes were found时,我所做的代码更改没有找到。没有什么可提交的,但 git 确实报告了 git +0 ~1 -0!,但我无法 add/commit 那个更改。

所以我对 'main' 项目进行了更改,然后我拉取了更改,一切都恢复正常了。

那么我如何更改子模块并从使用该子模块的 'main' 分支提交这些更改

(如果您想要 links/paths 到实际的 git 中心项目,请告诉我)。

So how can I make changes to the submodule and commit those changes from the 'main' branch that uses that submodule

您需要:

  • 确保你的子模块已经签出分支:默认情况下,子模块总是在 detached HEAD mode 中,签出 SHA1,而不是分支。

您可以让每个子模块跟随一个分支。
参见“How to make an existing submodule track a branch”。

cd /path/to/your/parent/repo/Foo
git config -f .gitmodules submodule.bar1.branch branch1
  • 在该分支中进行新的提交(修复),并推送到该子模块(或分支)的远程仓库
  • 返回父仓库,添加、提交并推送以记录该子模块的新 SHA1。 (即:gilink, a special entry in the index