Git子模块:我们可以让主项目的每个分支跟踪子模块中的同一个分支吗?
我读了一些关于子模块的信息,还有 我剩下的问题是:我能简单地在我的主项目的主分支中跟踪我的子模块的主分支,在我的主项目的生产分支中跟踪我的子模块的生产分支吗?有没有一个简单的方法 谢谢大家! 您可以使用。在某些Git子模块:我们可以让主项目的每个分支跟踪子模块中的同一个分支吗?,git,Git,我读了一些关于子模块的信息,还有 我剩下的问题是:我能简单地在我的主项目的主分支中跟踪我的子模块的主分支,在我的主项目的生产分支中跟踪我的子模块的生产分支吗?有没有一个简单的方法 谢谢大家! 您可以使用。在某些git操作之前/之后,git可以运行脚本并执行操作。您可能最感兴趣的钩子是post checkouthook 基本上,存储库中有一个.git/hooks目录。如果您对文件具有可执行权限,并且该文件与事件名称完全匹配(即:no.sample),则git将在适当的时间执行脚本 vim .git
git
操作之前/之后,git可以运行脚本并执行操作。您可能最感兴趣的钩子是post checkout
hook
基本上,存储库中有一个.git/hooks
目录。如果您对文件具有可执行权限,并且该文件与事件名称完全匹配(即:no.sample
),则git
将在适当的时间执行脚本
vim .git/hooks/post-checkout
chmod +x .git/hooks/post-checkout
使用此信息,您可以创建一个bash脚本,该脚本在签出主存储库中的分支后签出每个子模块:
#!/bin/bash
CURRENT_GIT_BRANCH="`git rev-parse --abbrev-ref HEAD`"
cd modules/module001
git checkout ${CURRENT_GIT_BRANCH}
cd ../../
cd modules/module002
git checkout ${CURRENT_GIT_BRANCH}
您甚至可以通过查看存储库的目录结构或.gitmodules
文件来使用模块列表
这意味着当您在主存储库中执行git签出分支
时,将为post checkout
钩子中列出和描述的每个子模块签出相同的分支
应该注意的是,您不能直接将钩子提交到存储库,因为这可能会在克隆新存储库等时带来安全风险