2014-02-22 51 views
0

我有一个git存储库,我可以通过SSH连接到远程服务器。远程存储库是非裸露的。让git从本地资源库更改到服务器存储库

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

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

+0

您应该将本地更改推送到远程仓库,可能会推送到新的分支,以便可以创建并审阅抽取请求。 – StuartLC

回答

1

由于现有的评论和答案都是这样说的,似乎建立一个权威的,“裸”的存储库是比较常见的,供贡献者推动这个存储库。这就清楚地表明,例如,在指定的Remote-Repo-Site上的分支develdevel分支,而所有其他分支只是淡淡的模仿。 :-)这在企业环境中特别常见。它的优点是有明确的权限。

这就是说,虽然没有任何东西阻止你在git中构建一个纯粹的点对点系统。在这里,每个git仓库本身都非常好。回购[R 一个在主机A上是一样的回购R于主机B

为了使这个方便的那么好,在主机A上,在回购副本那里,你可以创建一个“远程”主机B.在主机B上,在那里的回购副本中,为主机A创建一个远程主机。然后,无论您目前在哪个系统上,都可以简单地使用git fetch remote(其中是该主机上的名称,其他主机为你好奇的主持人)。实际上,您可以继续将此模型扩展为拥有多个对等点,并且可能有多个对等点可能同步的多个“更权威”点。也就是说,您可以构建权威和对等存储库的混合体。

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

这里很重要的一点是,存储库的“裸”不是其权限的一部分(如果有的话)。实际上,裸回购的唯一一点就是简化为git push。如果您推送到某个人员正在工作的存储库,则他们可能会认为他们在提交0ab7c32devel,但现在他们的devel指向提交905c4fd。 裸仓库没有工作树,因此根据定义,您不能在该裸仓库的工作树中混淆某人正在进行的工作。

同时,有一个仓库,它易于git push到,主要的一点是要有一个双方同意的会合点,这样,如果有十几个同行的各种开发分支发展了,他们不所有人都彼此了解,为彼此设置遥控器,并相互授权访问他们自己的系统。

这两个属性使裸仓库成为构建权威结构的理想选择。 “工蜂”克隆权威系统,做他们的工作,然后(试图)推回到权威系统。所有的关系都是成对的,并且没有工蜂必须直接与另一个交谈。

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


水银通过跟踪其中“下次提交”逃脱这正好以不同的方式,所以你可以把非裸库,即使他们有被顶来分支签出。 Git可以做同样的事情,但它需要能够立即创建一个新的分支名称,或者当有人推送到你所在的分支时,让你进入“分离HEAD”模式。

1

你必须能够ssh到你的本地机器来做到这一点。只需要:

git pull [email protected]:/path/to/repository/on/local/machine 

正如StuartLC在评论中指出的那样,最好从本地机器推送到远程存储库。最好在某个地方建立一个裸仓库,并通过它进行推/拉。

相关问题