git远程仓库是如何工作的?

5
如果我有一个版本控制的主项目。
然后我添加了第三方插件的远程仓库:
``` git remote add myplugin ```
然后我就可以执行
``` git pull myplugin master ```
来获取远程仓库中的变更。
现在假设我的项目设置如下:
/
/index.php
/whatever

远程设置为

/
/whatever.php

当我拉取远程代码时,最终得到的是:
/index.php
/whatever
/myplugin
/myplugin/whatever.php

这很好。

我想知道的是, 如果我对我的插件进行更改,

如果我执行git push myplugin master会推送什么?

它只会推送myplugin中的更改吗? 还是远程作为第二个存储库,并提交整个存储库?

2个回答

6
git pull myplugin 后,只有当远程仓库已经包含 /myplugin/whatever.php(不是只有whatever.php)时,你才会进入 /myplugin/whatever.php
添加远程仓库意味着拉取其所有历史记录并合并到您的仓库中,或将您的提交从您的所有仓库推送到远程仓库(而不仅仅是来自本地 'myplugin' 的更改)。
您所描述的(仅推送来自“myplugin”的更改或仅在“myplugin”中拉取提交)称为子模块
 git submodule add url/myplugin myplugin

这将会添加一个名为myplugin的目录,其中你可以找到一个嵌套的Git仓库,它按照你在问题中所描述的方式运作。
这并不仅仅是一个新的远程地址,而是一个子模块URL,用于在特定SHA1下包含另一个存储库的子目录。


0

远程操作就像第二个仓库一样,因为它确实是一个仓库...当您发出推送命令时,GIT会将已修改的内容复制到远程,有效地使其与本地仓库保持一致。

如果您问的是推送是否会遍历子目录,则答案是肯定的。

如果您问的是尚未提交到本地仓库的更改是否会被推送到远程,则答案是否定的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接