Git submodules 是否在.gitmodules中为每个子模块指定了签出分支?

Git submodules 是否在.gitmodules中为每个子模块指定了签出分支?,git-submodules,Git Submodules,我有许多不同路径的子模块。一些子模块位于我们存储库的根目录中,大多数位于src/app/shared comps中,但许多子模块分散在整个存储库中。克隆项目时,子模块的分支都处于分离头状态,我想在.gitmodules文件中指定的分支上设置它们。我目前手动执行此操作,如下所示: cd submodule1 && git checkout master && cd .. && cd src/app/shared-comps && fi

我有许多不同路径的子模块。一些子模块位于我们存储库的根目录中,大多数位于src/app/shared comps中,但许多子模块分散在整个存储库中。克隆项目时,子模块的分支都处于分离头状态,我想在.gitmodules文件中指定的分支上设置它们。我目前手动执行此操作,如下所示:

cd submodule1 && git checkout master && cd .. &&
cd src/app/shared-comps &&
find . -maxdepth 1 -mindepth 1 -type d -exec sh \
    -c "(echo {} && cd {} && git checkout our-fork && echo)" \;
# so on and so forth

我怎样才能让脚本避免硬编码
子模块1
进入主分支,而
src/app/shared comps
应该全部进入我们的分支
呢?事实上,如果一些共享comp不应该在我们的fork分支上,而可能是master分支上,那么我们如何让它们转到.gitmodules中指定的分支上呢?

每当您想将子模块设置在.gitmodules中设置的分支上时,您可以运行以下操作:

git submodule foreach 'git checkout `git config -f $toplevel/.gitmodules submodule.$sm_path.branch`'
当从头开始设置新项目时,最好运行此操作

当您执行git拉取并且分支名称发生更改时,您需要再次运行它。我不确定有没有一个git钩子可以帮你做到这一点。Git没有一个
post-pull
hook,在那里你可以做这些事情

(我会把它放在评论中,但需要格式化——关于后拉钩,我确实注意到赫斯基在我的同事在WSL内部做了一个香草
git-pull
后打印了这个。)

internal/modules/cjs/loader.js:775
    throw err;
    Error: Cannot find module 'nice-try'
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/cross-spawn/lib/parse.js
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/cross-spawn/index.js    
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/execa/index.js
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/lib/runner/index.js
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/lib/runner/bin.js
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/run.js

      at Function.Module._resolveFilename (internal/modules/cjs/loader.js:772:15)
      at Function.Module._load (internal/modules/cjs/loader.js:677:27)
      at Module.require (internal/modules/cjs/loader.js:830:19)
      at require (internal/modules/cjs/helpers.js:68:18)
      at Object.<anonymous> (/mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/cross-spawn/lib/parse.js:4:17)
      at Module._compile (internal/modules/cjs/loader.js:936:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
      at Module.load (internal/modules/cjs/loader.js:790:32)
      at Function.Module._load (internal/modules/cjs/loader.js:703:12)
      at Module.require (internal/modules/cjs/loader.js:830:19) {
        code: 'MODULE_NOT_FOUND',
        requireStack: [
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/cross-spawn/lib/parse.js',
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/cross-spawn/index.js', 
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/execa/index.js',       
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/lib/runner/index.js',
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/lib/runner/bin.js',
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/run.js'
        ]
internal/modules/cjs/loader.js:775
犯错误;
错误:找不到模块'nice try'
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/cross spawn/lib/parse.js
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/cross spawn/index.js
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/execa/index.js
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/lib/runner/index.js
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/lib/runner/bin.js
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/run.js
位于Function.Module.\u resolveFilename(internal/modules/cjs/loader.js:772:15)
at Function.Module._load(内部/modules/cjs/loader.js:677:27)
at Module.require(内部/modules/cjs/loader.js:830:19)
根据需要(内部/modules/cjs/helpers.js:68:18)
在对象上。(/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/cross spawn/lib/parse.js:4:17)
at模块编译(内部/modules/cjs/loader.js:936:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:947:10)
在Module.load(内部/modules/cjs/loader.js:790:32)
at Function.Module._load(内部/modules/cjs/loader.js:703:12)
at Module.require(内部/modules/cjs/loader.js:830:19){
代码:“未找到模块”,
requireStack:[
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/cross spawn/lib/parse.js”,
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/cross spawn/index.js”,
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/execa/index.js”,
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/lib/runner/index.js”,
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/lib/runner/bin.js”,
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/run.js”
]

只要您想将子模块设置在.gitmodules中设置的分支上,就可以运行以下操作:

git submodule foreach 'git checkout `git config -f $toplevel/.gitmodules submodule.$sm_path.branch`'
当从头开始设置新项目时,最好运行此操作

当你做一个git pull并且分支名称改变时,你需要再次运行它。我不确定是否有一个git钩子可以帮你做到这一点。git没有一个
post pull
hook可以让你做这些事情

(我会把它放在评论中,但需要格式化——关于后拉钩,我确实注意到赫斯基在我的同事在WSL内部做了一个香草
git-pull
后打印了这个。)

internal/modules/cjs/loader.js:775
    throw err;
    Error: Cannot find module 'nice-try'
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/cross-spawn/lib/parse.js
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/cross-spawn/index.js    
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/execa/index.js
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/lib/runner/index.js
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/lib/runner/bin.js
 - /mnt/d/work/dev/projects/mhp-new/node_modules/husky/run.js

      at Function.Module._resolveFilename (internal/modules/cjs/loader.js:772:15)
      at Function.Module._load (internal/modules/cjs/loader.js:677:27)
      at Module.require (internal/modules/cjs/loader.js:830:19)
      at require (internal/modules/cjs/helpers.js:68:18)
      at Object.<anonymous> (/mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/cross-spawn/lib/parse.js:4:17)
      at Module._compile (internal/modules/cjs/loader.js:936:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
      at Module.load (internal/modules/cjs/loader.js:790:32)
      at Function.Module._load (internal/modules/cjs/loader.js:703:12)
      at Module.require (internal/modules/cjs/loader.js:830:19) {
        code: 'MODULE_NOT_FOUND',
        requireStack: [
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/cross-spawn/lib/parse.js',
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/cross-spawn/index.js', 
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/node_modules/execa/index.js',       
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/lib/runner/index.js',
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/lib/runner/bin.js',
            '/mnt/d/work/dev/projects/mhp-new/node_modules/husky/run.js'
        ]
internal/modules/cjs/loader.js:775
犯错误;
错误:找不到模块'nice try'
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/cross spawn/lib/parse.js
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/cross spawn/index.js
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/execa/index.js
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/lib/runner/index.js
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/lib/runner/bin.js
-/mnt/d/work/dev/projects/mhp new/node_modules/husky/run.js
位于Function.Module.\u resolveFilename(internal/modules/cjs/loader.js:772:15)
at Function.Module._load(内部/modules/cjs/loader.js:677:27)
at Module.require(内部/modules/cjs/loader.js:830:19)
根据需要(内部/modules/cjs/helpers.js:68:18)
在对象上。(/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/cross spawn/lib/parse.js:4:17)
at模块编译(内部/modules/cjs/loader.js:936:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:947:10)
在Module.load(内部/modules/cjs/loader.js:790:32)
at Function.Module._load(内部/modules/cjs/loader.js:703:12)
at Module.require(内部/modules/cjs/loader.js:830:19){
代码:“未找到模块”,
requireStack:[
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/cross spawn/lib/parse.js”,
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/cross spawn/index.js”,
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/node_modules/execa/index.js”,
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/lib/runner/index.js”,
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/lib/runner/bin.js”,
“/mnt/d/work/dev/projects/mhp new/node_modules/husky/run.js”
]