git submodule update --remote vs git pull

use*_*714 36 git git-submodules

跑步有什么区别

git submodule update --remote
Run Code Online (Sandbox Code Playgroud)

VS

cd <submodule directoy>
git pull
Run Code Online (Sandbox Code Playgroud)

假设子模块先前已设置为跟踪某个分支:

git submodule add -b master [URL to Git repo]
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 37

不同之处是:

  • git pull 将只更新您的子模块分支,但它可以是您可以在该子模块仓库中自行检出的任何分支.
  • git submodule update --remote将仅更新在其中注册的分支.gitmodule,并且默认情况下,您将最终得到分离的HEAD,除非--rebase--merge指定或将密钥submodule.$name.update设置为rebase,mergenone.

在这两种情况下,您仍然必须返回到父repo,添加并提交新的子模块SHA1引用.
这是因为在两个实例中,子模块的SHA1都会发生变化,这意味着必须添加并提交gitlink(父存储库索引中的特殊条目,以子模块的根文件夹命名).

  • @Doug 那是因为 gitlink:我编辑了答案并添加了说明 gitlink 是什么的链接。你可以在这里看到一个 gitlink:http://stackoverflow.com/a/9857021/6309 (3认同)
  • @tortal 6年多后,当然,我可以扩展这个答案。我已经编辑了上述答案:请告诉我是否可以添加更多详细信息。 (2认同)