2012-09-13 27 views
5

如果我有一個受版本控制的主項目。git remotes如何工作?

我再添加一個遠程的第三方插件

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中的更改嗎? 或者做遠程操作作爲第二個存儲庫並將提交整個存儲庫?

回答

6

只有在遠程回購已經包含/myplugin/whatever.php(不juut whatever.php

添加遠程手段拉動其所有的歷史和它合併到您的回購,或推你你會結束後,一個git pull myplugin後,在/myplugin/whatever.php承諾所有您的回購進入遠程(不只是從您的本地'myplugin'的變化)。

你所描述的(從「爲myplugin」只推了變化,或者提交拉只在「爲myplugin」)被稱爲submodules

git submodule add url/myplugin myplugin 

這將添加一個目錄爲myplugin,其中像你在你的問題描述,你會發現第二個嵌套的Git回購演技。
它不僅僅是一個新的遠程,而且是一個子模塊URL,用於在一個子目錄中包含另一個特定SHA1的回購。

0

遠程確實像第二個存儲庫一樣行事,因爲它是一個...當您發出推送命令時,GIT會將已修改的內容複製到遠程,從而有效地使其與本地存儲庫一致。

如果你問的是推是否會遍歷子目錄,那麼答案是肯定的。

如果您問是否尚未提交到本地存儲庫的更改將被推送到遠程,那麼答案是否定的。