如何将git中的子模块更新为该外部存储库中的HEAD提交

时间:2010-02-16 23:56:53

标签: git version-control external git-submodules

我在找到答案时遇到了问题所以我将其张贴给后人。

情况是,你有一个带子模块的git repo(类似于svn external)。您希望更新该引用以指向外部存储库中的其他提交。您可能会认为'git submodule sync'或'git submodule update'会这样做 - 你错了。

2 个答案:

答案 0 :(得分:4)

步骤如下:

  • cd到子模块所在的实际目录。
  • 运行'git pull origin'或任何你想要做的事情来将它设置为新的提交。
  • cd出该目录(可能是存储库根目录)并运行“git status” - 您将看到该目录已更改。如果你做差异,你会看到类似的东西:
diff --git a/default/bin/hdvcs b/default/bin/hdvcs
index bbd3f56..7c9394c 160000
--- a/default/bin/hdvcs
+++ b/default/bin/hdvcs
@@ -1 +1 @@
-Subproject commit bbd3f56898054e533e81b52b90b94155841b40a8
+Subproject commit 7c9394c8520e41a704e6658360064758b20a3dfc
  • 提交此更改。

答案 1 :(得分:1)

如果要将所有git子模块更新为远程仓库的HEAD,只需输入

  

git submodule foreach git pull origin master