使用`git submodule update`

时间:2014-04-14 17:48:41

标签: git

我们说我有project_a(git repo),其中包含文件&另一个project_b(git repo)。

project_a
 --> files
 --> project_b

正如git-scm书所示,我可以运行:

cd project_a
git submodule init
git submodule update // clones project_b repo specified in '.gitsubmodules'

填充project_b内最初为空的project_a目录。

我不想运行git submodule update以获取project_b的最新信息,而是希望在某个时间点克隆最新版本的project_b,然后project_a 1}}仅使用该版本(当然,除非我在git pull中执行project_b)。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您所描述的正是子模块在git中的工作原理。如果您不更新子模块的哈希值并将其签入project_a,则您将始终使用相同版本的project_b

答案 1 :(得分:0)

这是引入子模块时应该使用的方法:

  1. cd project_a

  2. git submodule add https://url/to/repository relative/path/to/save/repository/to

  3. cd relative/path/to/save/repository/to

  4. git checkout desired_commit

  5. cd -(返回上一个目录)

  6. git add relative/path/to/save/repository/to

  7. git commit(无论何时提交父目录,它都会记录所有子模块所在的当前提交。)

  8. 如果您想随时更改子模块的提交,只需更改到该目录并像平常一样使用它。只要确保你总是把它放在一个推送到它原点的提交上。否则,您可能会遇到父存储库指向实际存储库中不存在的提交的情况。