在repo中刷新最新的git子模块

时间:2012-07-11 00:00:18

标签: git github

我有点像一个git newb所以请在这里忍受我。我有一个项目有一个需要刷新的子模块。

该项目正在使用子模块的版本1,并且有更改,所以我想使其使用最新版本。

如何刷新子模块并应用更改,以便克隆或从项目中提取的其他用户将使用最新的更新版本1.5?

以下是该项目的外观:

ProjectA:配置为repoA的远程仓库 它依赖于指向repoB的子模块。

项目根目录中的.git / config文件如下所示:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@/github.com/foo/foo.git

项目根目录中还有.gitmodules文件:

[submodule "Vendor/some-external-library"]
        path = Vendor/some-external-library
        url = https://github.com/some-external-library/some-external-library.git

在'some-external-library'目录中,没有.gitmodules文件,只有标准的.git目录和相应的文件。 .git / config指向repoB。

1 个答案:

答案 0 :(得分:0)

子模块实际上是在主仓库中检出的git repos,而你的主仓库知道它们的内容,比如他们检查过的提交。

所以,你可能想要做的是转到sumbodule的文件夹并转到git pull origin master(或者你要提取而不是master的提交),然后执行一个提交,反映这个改变(更改主要仓库上的子模块

简而言之:

cd submodule_dir
git pull origin master
cd main_dir
git add submodule_dir
git commit

你也可以git submodule foreach git pull按时更新所有子模块引用,但这对于repo mantainability来说可能是一个坏主意。

git help submodule

的更多信息