繁体   English   中英

让git将更改从本地存储库更改为服务器存储库

[英]Let git pull changes from local repository to server repository

我在远程服务器上有一个可以通过SSH连接的git存储库。 远程存储库是非裸的。

我将远程存储库克隆到我的本地计算机。

如何告诉远程服务器从本地计算机中提取更改?

您必须能够ssh到本地计算机才能执行此操作。 做就是了:

 git pull user@machine-ip:/path/to/repository/on/local/machine

正如StuartLC在评论中指出的那样,从本地计算机推送到远程存储库可能更好。 优选地,在某处具有裸存储库并且通过该存储器推/拉。

正如现有的评论和回答所说的那样,建立一个权威的“裸”存储库似乎更常见,贡献者推动了这个存储库。 这清楚地表明,例如,指定的远程回购站点上的分支devel devel分支,而所有其他分支仅仅是苍白的弱模仿。 :-)这在企业环境中尤为常见。 它的优点是有明确的权限。

尽管如此,没有什么可以阻止你在git中构建一个纯粹的点对点系统。 在这里,每个git存储库本身都非常好。 宿主A上的Repo R A与宿主B上的repo R B一样好。

为了方便,在主机A上,在那里的repo副本中,你可以为主机B创建一个“远程”。在主机B上,在那里的repo副本中,你为主机A创建一个远程。然后你在哪个系统上此刻,你可以简单地git fetch remote (其中remote 是主机你即将好奇另一台主机的名称)。

事实上,你可以继续将这个模型扩展到拥有许多对等体,也许还有几个“更具权威性”的点,多个对等体可能会同步这些点。 也就是说,您可以构建权威和对等存储库的混合体。

这是有效的,因为所有git repos的结构基本相同 使权威存储库“权威”的唯一因素是使用它的人,以这种方式对待它。 如果我有我的回购并从你那里得到东西,并且相信它比我以前的东西更好,那么,你必须成为这里的权威。 如果我选择不相信你,那么我就成了我自己的权威。

这里需要注意的是,存储库的“裸露”性不是其权限(如果有的话)的一部分。 事实上,一个简单的回购的唯一要点就是让git push它变得简单。 如果你推送到某人正在工作的存储库,他们可能会认为他们正在devel时提交0ab7c32 ,但现在他们的devel指向提交905c4fd 1裸存储库没有工作树,因此根据定义,您不能在该裸存储库的工作树中混淆某人正在进行的工作。

同时,拥有一个易于git push的存储库的要点是拥有一个双方同意的会合点,这样如果有十几个同事在各个开发分支上发展,他们就不必彼此都知道了。 ,为彼此设置遥控器,并授予彼此访问自己的系统的权限。

正是这两个属性使裸存储库成为构建权威结构的理想选择。 “工蜂”克隆权威系统,完成工作,然后(尝试)将其推回到权威系统。 所有关系都是成对的,任何工蜂都不必直接与另一个人交谈。

但你不必这样做。 例如,我有我的笔记本电脑和台式机,并将它们设置为彼此的同行。 从笔记本电脑我可以根据需要git fetch desktop ,反之亦然。 我发现的一个缺点是,我可以忘记我在笔记本电脑(或桌面)上的工作正在进行中,我没有做过,现在我在另一个,所以现在我无法开始工作 - 没有先进入另一台机器进行中。 但这通常不是什么大问题。


1 Mercurial通过跟踪“下一次提交”以不同方式进行的操作来逃避这种情况,因此您可以推送到非裸存储库,即使它们已经检出了推送分支。 Git可以做同样的事情,但它需要能够动态创建一个新的分支名称,或者当有人推送到你所在的分支时让你进入“分离的HEAD”模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM