Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git子模块:我们可以让主项目的每个分支跟踪子模块中的同一个分支吗?_Git - Fatal编程技术网

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
钩子中列出和描述的每个子模块签出相同的分支

应该注意的是,您不能直接将钩子提交到存储库,因为这可能会在克隆新存储库等时带来安全风险