使用子模块时的Git签出

使用子模块时的Git签出,git,version-control,git-submodules,git-checkout,gitattributes,Git,Version Control,Git Submodules,Git Checkout,Gitattributes,我有一个母公司git回购,其中有3个分支机构。我还使用了一个子模块repo,它有3个同名分支,父repo的每个分支中的.gittributes文件指向同名的子模块分支。这一切都很好,但我的问题是,当我在父repo中执行git签出分支时,我总是必须在之后执行git子模块更新,否则子模块目录中的文件将不会更新以反映正确的分支 是否有一种简单的方法可以自动执行此操作,以便每次我签出时,子模块文件都会更新以反映正确的分支 git checkout master & git submodule f

我有一个母公司git回购,其中有3个分支机构。我还使用了一个子模块repo,它有3个同名分支,父repo的每个分支中的.gittributes文件指向同名的子模块分支。这一切都很好,但我的问题是,当我在父repo中执行git签出分支时,我总是必须在之后执行git子模块更新,否则子模块目录中的文件将不会更新以反映正确的分支

是否有一种简单的方法可以自动执行此操作,以便每次我签出时,子模块文件都会更新以反映正确的分支

git checkout master & git submodule foreach git checkout master
其中
master
是所选分支的名称

您可以添加一个
hook
post checkout
并在调用
git checkout
时自动执行此操作。您需要创建一个文件
.git/hooks/post checkout
,该文件如下所示:

branch=$(git rev-parse --symbolic --abbrev-ref $1)
git submodule foreach git checkout $branch
希望这会有所帮助

其中
master
是所选分支的名称

您可以添加一个
hook
post checkout
并在调用
git checkout
时自动执行此操作。您需要创建一个文件
.git/hooks/post checkout
,该文件如下所示:

branch=$(git rev-parse --symbolic --abbrev-ref $1)
git submodule foreach git checkout $branch

希望这会有所帮助

好的,我可以用其他克隆回购协议的开发人员都可以访问别名的方式来为其命名吗?因为和我一起工作的人不会记得每次结账时都这么做。我已经用git hooks更新了我的答案。如果这有帮助,请记住将答案标记为已解决:)好的,我可以将其别名为克隆回购协议的任何其他开发人员都可以访问该别名的方式吗?因为和我一起工作的人不会记得每次结账时都这么做。我已经用git hooks更新了我的答案。如果有帮助,请记住将答案标记为已解决:)