如何修复在非主分支上提交的修改后的子模块引用?

How to fix modified submodule refs committed on non-master branch?

我无意中在我的功能分支上提交了修改后的子模块引用。我需要将它们重置为它们在 master 上的状态。

要解决此问题,您必须在每个子模块中检查正确的提交 SHA,然后在顶级存储库中提交这些更改。这是我想出的:

  1. 将最新的主分支合并到您的分支中。
  2. 运行以下

    for module in module1 module2 path/to/module3;
    do 
        (cd $module && git checkout "$(git rev-parse origin/master:$module)" && cd -)
    done
    
    git commit -am 'fix submodule refs' && git push
    

一个班轮

for module in module1 module2 path/to/module3; do (cd $module && git checkout "$(git rev-parse origin/master:$module)" && cd -); done; git commit -am 'fix submodule refs' && git push

创建别名

alias fix-submodules='for module in module1 module2 path/to/module3; do (cd $module && git checkout "$(git rev-parse origin/master:$module)" && cd -); done; git commit -am "fix submodule refs" && git push'

现在您可以运行:fix-submodules