如何在git中更新子模块到外部仓库的HEAD提交

4
我曾经遇到过这个问题,所以我现在把它记录下来留给后人。
情况是这样的,你有一个带有子模块的git仓库(类似于svn外部引用)。你想要更新该引用,使其指向外部仓库中的不同提交。你可能会想使用“git submodule sync”或“git submodule update”,但这么做是错误的。
2个回答

4
步骤如下:
  • cd到子模块所在的实际目录。
  • 运行 "git pull origin" 或者任何你想做的设置来将其设置为新的提交。
  • 退出该目录(可能是到存储库根目录)并运行 "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
如果您想将所有git子模块更新到远程仓库的HEAD,请输入以下命令:

git submodule foreach git pull origin master


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接