Git 使用子模块时结账

Git checkout when using submodules

我有一个包含 3 个分支的父 git 存储库。我还使用了一个子模块仓库,它有 3 个同名分支,父仓库每个分支中的 .gitattributes 文件指向同名的子模块分支。这一切都很好,但我的问题是,当我在父仓库中执行 git checkout BRANCH 时,我总是必须在之后执行 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 )
git submodule foreach git checkout $branch

希望这会有所帮助