假设我在远程和本地有一个名为Shared Features
的存储库。
我想将这个repo添加到另一个git repo作为submodule
,但是我不想使用远程repo,而是使用本地repo(出于带宽原因)。
所以我想使用这个本地仓库作为子模块和远程仓库之间的代理。这可能吗?
提前致谢。
注意:如果您在SourceTree中告诉我如何执行此操作,我将非常感激。
答案 0 :(得分:1)
子模块可以是您喜欢的任何存储库,但如果您想在本地添加它,则需要supported protocol。
在上面的链接中,第一个描述的协议是Local protocol
,您可以clone
使用path
或file://
<强>
Local Protocol
强>最基本的是本地协议,其中远程存储库位于磁盘上的另一个目录中。
如果团队中的每个人都可以访问共享文件系统(如NFS挂载),或者每个人都登录到同一台计算机的可能性较小,则通常会使用此方法。
后者并不理想,因为您的所有代码存储库实例都将驻留在同一台计算机上,从而更有可能造成灾难性损失。
如果您有共享的已挂载文件系统,那么您可以从
clone
push
,pull
和local file-based repository
进行操作即可。要
clone
这样的存储库或将其作为远程添加到现有项目,请使用path
到存储库作为URL 。例如,要克隆本地存储库,您可以运行以下内容:
git clone /opt/git/project.git
或者你可以这样做:
如果您在网址开头明确指定git clone file:///opt/git/project.git
file://
,那么Git的运作方式略有不同。
如果您只是指定路径,Git会尝试使用硬链接或直接复制所需的文件。
如果指定
file://
,Git会启动它通常用于通过网络传输数据的进程,这通常是传输数据的效率低得多的方法。指定
file://
前缀的主要原因是,如果您想要使用无关的引用或对象省略存储库的干净副本 - 通常是在从另一个版本控制系统或类似的东西导入之后(请参阅Git Internals)用于维护任务)。我们将在这里使用正常路径,因为这样做几乎总是更快。<强>
To add a local repository to an existing Git project, you can run something like this:
强>git remote add local_proj /opt/git/project.git
然后,您可以通过网络推送和拉出该遥控器,就好像您是通过网络进行操作一样。