【问题标题】:How do git remotes work?git 遥控器是如何工作的?
【发布时间】:2012-09-06 03:46:14
【问题描述】:

如果我有一个受版本控制的主项目。

然后我为第三方插件添加一个遥控器

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 中的更改吗? 还是远程充当第二个存储库并提交整个存储库?

【问题讨论】:

    标签: git version-control git-push git-pull git-remote


    【解决方案1】:

    远程确实像第二个存储库,因为它是一个...当您发出推送命令时,GIT 会将已修改的内容复制到远程,从而有效地将其重新与您的本地存储库保持一致。

    如果你问的是push是否会遍历到子目录,那么答案是肯定的。

    如果您询问是否将尚未提交到本地存储库的更改推送到远程,那么答案是否定的。

    【讨论】:

      【解决方案2】:

      只有当远程仓库已经包含/myplugin/whatever.php(不是juut whatever.php)时,你才会在git pull myplugin之后进入/myplugin/whatever.php

      添加远程意味着提取其所有历史记录并将其合并到您的仓库中,或者将您的提交从 all 您的仓库推送到远程(不仅仅是来自本地'myplugin'的更改) .

      您所描述的内容(仅推送来自“myplugin”的更改,或仅拉取“myplugin”中的提交)称为submodules

       git submodule add url/myplugin myplugin
      

      这将添加一个目录 myplugin,您会在其中找到第二个嵌套的 Git 存储库,其作用与您在问题中描述的一样。
      它不仅仅是一个新的遥控器,而是一个子模块 url,用于在子目录中包含特定 SHA1 的另一个 repo。

      【讨论】:

        猜你喜欢
        • 2014-10-28
        • 2010-12-07
        • 1970-01-01
        • 2012-08-01
        • 2016-11-08
        • 1970-01-01
        • 1970-01-01
        • 2011-09-07
        • 2011-02-17
        相关资源
        最近更新 更多