如何在 git 回购中链接依赖项?

在我的脚本中,我经常使用有自己的回购协议的库(我的或其他人的)。我不想重复这些在我的回购,并陷入更新他们每一次新版本出来。 然而,当有人克隆回购,它应该仍然在本地工作,没有中断链接。

你知道我能做什么吗?

66506 次浏览

您可以在 git 中使用子模块来实现这一点:

git submodule add path_to_repo path_where_you_want_it

因此,如果库的存储库的 URL 是 git://github.com/example/some_lib.git,并且您希望它位于项目中的 lib/some_lib,那么您可以输入:

git submodule add git://github.com/example/some_lib.git lib/some_lib

注意,这需要在存储库的顶级目录中完成。因此,不要将 cd放到首先放置它的目录中。

在您添加子模块之后,或者当有人对您的存储库进行新的签出时,您需要:

git submodule init
git submodule update

然后所有你添加的子模块都会在同一个版本中签出。

当您想要更新到其中一个库的更新版本时,将 cd放入子模块并拉动:

cd lib/some_lib
git pull

然后,当您执行 git status时,您应该看到修改后的部分中列出的 lib/somelib。添加那个文件,提交,然后就是最新的了。当一个合作者将这个提交拉入他们的存储库时,他们将看到 lib/somelib被修改,直到他们再次运行 git submodule update