我有一个像这样的git存储库结构:
─ main_project_repo (branch: master)
├── submodule: component1_repo (branch: master)
├── submodule: component2_repo (branch: master)
.
└── submodule: componentN_repo (branch: master)
即main_project_repo
不包含源代码,而仅包含子模块。
为了使用功能分支开发功能,我在main_project_repo
上创建了该功能分支,以及受该功能影响的所有组件仓库,但对不是就是这样:
─ main_project_repo (branch: feature/foo)
├── submodule: component1_repo (branch: master)
├── submodule: component2_repo (branch: feature/foo)
.
└── submodule: componentN_repo (branch: master)
我想将remote branch tracking用于子模块,并避免在.gitmodules
中修改main_project_repo
(在合并之前必须清理),我使用.
作为远程分支值,它将为每个具有该值的子模块自动跟踪origin/feature/foo
。
问题是:我想为每个子模块设置.
,以便能够仅运行git submodule update --remote
来签出当前功能分支,但这会导致对于没有此类功能分支的每个子模块,都会出现错误:
git submodule update --remote
fatal: Needed a single revision
Unable to find current origin/feature/foo revision in submodule path 'component1_repo'
我现在可以远程手动更新所有子模块,而忽略该错误,或者我可以为每个子模块配置功能分支-无论我是否需要一个(这会导致大量未使用的功能)分支)。
有没有办法说“跟踪远程分支(如果存在),否则使用master
”?
你怎么做到的?