如果我有一个受版本控制的主项目。
然后我为第三方插件添加了一个遥控器
git remote add myplugin <url>
然后我就可以做git pull myplugin master了
然后它就会从遥控器上拉出变化。
现在假设我的项目设置为:
/
/index.php
/whatever并将遥控器设置为
/
/whatever.php当我打开遥控器的时候,我的结果是
/index.php
/whatever
/myplugin
/myplugin/whatever.php这很好。
我想知道的是,如果我修改myplugin,
如果我发出git push myplugin master,推送的是什么?
它只会推送myplugin中的更改吗?或者远程服务器充当第二个存储库并提交整个存储库?
发布于 2012-09-13 13:32:31
只有当远程存储库已经包含git pull myplugin (而不是juut whatever.php)时,您才会在/myplugin/whatever.php中结束一个/myplugin/whatever.php
添加一个遥控器意味着拉取它的所有历史记录并将其合并到您的存储库中,或者将您的提交从所有存储库推送到遥控器中(不仅仅是来自本地“myplugin”的更改)。
你所描述的(只推送来自'myplugin‘的更改,或者仅在’myplugin‘中拉取提交)被称为。
git submodule add url/myplugin myplugin这将添加一个目录myplugin,您将在其中找到第二个嵌套的Git代码库,其行为与您在问题中所描述的一样。
它不只是一个新的遥控器,而是一个子模块url,用于在子目录中包含特定SHA1处的另一个存储库。
发布于 2012-09-13 13:15:16
遥控器确实像第二个存储库,因为它是一个……当您发出推送命令时,GIT会将已修改的内容复制到远程,有效地使其与本地存储库保持一致。
如果你问的是推送是否会遍历到子目录,那么答案是肯定的。
如果您询问是否会将尚未提交到本地存储库的更改推送到远程,则答案是否定的。
https://stackoverflow.com/questions/12399758
复制相似问题