我需要服务器才能使用git吗?

时间:2009-07-23 16:56:51

标签: git

如果我需要从家庭计算机上下载工作或其他任何内容,我是否需要拥有网络服务器并在那里签入文件?

如果我正在使用git,我是否还需要一台服务器,或者我实际上是在他们的服务器上保存文件?

7 个答案:

答案 0 :(得分:18)

首先,Git是分布式版本控制系统。这意味着在使用Git时,您可以在工作中使用完整的存储库,并且还可以在家用计算机上复制完整存储库(称为克隆)。您可以在家用计算机上工作,进行更改,阅读提交消息,查看差异,切换分支等,而无需在工作时对计算机进行持续的网络访问。

然后您的问题是如何在工作和家中同步存储库。有很多可能性:

  • 您可以在某些可移动媒体(如USB磁盘(pendrive))上创建裸存储库(即没有工作目录),克隆存储库。你可以通过这个存储库进行同步,从一个地方推送到它,然后在其他地方从中取出(拉)。

  • 您可以使用提及Git hosting services之类的GitHub之一,并使用它来同步您的存储库。您应该记住,通常免费计划需要将您的存储库公开;如果你想拥有私人存储库,你必须使用付费计划(付费服务)。检查您要使用的网站提供的内容。

  • 您可以使用git-bundle命令:使用“git bundle”命令在一侧生成包,然后使用包文件代替存储库URL在另一侧克隆/获取/提取,例如git fetch file.bndl。您可以以任何方式传输捆绑包,无论是在USB闪存驱动器上,通过HTTP下载(普通网络服务器就足够了),FTP或SCP。

  • 您可以通过SSH为您的存储库提供服务。为此,您需要git在工作和家庭计算机上安装,服务器上的ssh守护程序(您从/推送到的一侧)和客户端上的ssh客户端。不需要为服务器上的所有用户全局安装Git;你可以通过相关选项告诉git在哪里找到合适的git二进制文件(参见git文档)。在Tips and Tricks page on Git Wiki中你会发现“如何通过ssh推/拉到主机后面的主机?”尖端。

  • 最后,您可以使用简单的Web服务器通过HTTP为您的存储库提供服务,就像您发布网页一样。您需要记住运行git update-server-info以生成帮助信息。通常它是从post-update钩子(和post-commit完成的,如果存储库是非裸的,即如果你在其中创建提交);查看示例挂钩(并阅读githooks文档)以了解它是如何完成的。

另请参阅 我的回答How can I make my local Git repository available for git-pull?问题。

答案 1 :(得分:8)

Git存储库有许多托管解决方案,包括GitHubUnfuddle

您的问题的措辞表明您可能会误解Git(以及分布式版本控制系统)的全部内容。您可能希望阅读Unfuddle中的Git简介或Git简介here

答案 2 :(得分:2)

由于GIT是分散的,因此您可以在每个系统上获得存储库的完整副本。这使您可以灵活地采用工作流来同步适合您的存储库。鉴于你在问题中所说的话,我建议你选择以下两个选项之一。

通过ssh

同步您的家庭和工作存储库

如果您的家用机器和工作机器都可以从互联网访问,那么您可以从一个ssh到另一个,并将拉动更改推送到每个本地存储库。所以:

  1. SSH到您的其他计算机(其他工作或家庭)
  2. 下拉任何远程存储库更改
  3. 推高所有本地存储库更改。
  4. 通过中央存储库同步您的家庭和工作存储库

    这涉及将您的工作和主存储库更改与第三个存储库位置同步,该位置可以是托管服务,如UnfuddleGitHub,也可以是任何为您提供ssh的Web托管服务访问。

    我更喜欢第二种方法,因为它在另一个非现场位置为您提供了第三个存储库副本。

答案 3 :(得分:1)

我喜欢DropBox。 www.getdropbox.com

答案 4 :(得分:1)

Git类似于subversion / sourcesafe,但它的设计是分布式的。您可以将其中一个作为集中式服务器,或者您可以在同级之间工作。您可以使用更多模型,请参阅mmc的链接以获取更多信息。

GitHub可以在网上找到,但我怀疑你想要在工作中托管的东西,而不是对外开放。

答案 5 :(得分:0)

您可以使用以下内容: LogMeIn(https://secure.logmein.com/home.asp?lang=en

用于任何其他远程桌面访问软件。

有关更多此类软件,请参阅此处 - > http://mashable.com/2007/09/07/remote-access/

答案 6 :(得分:0)

即使中央服务器可能会使事情变得更容易,但您不需要一个。

在工作中,我使用git-bundle周围的一些脚本来在我们可以互相访问的方式将未连接到网络的计算机之间的git存储库同步。为了移动捆绑包,我使用电子邮件或USB拇指驱动器。 (有问题的机器甚至无法通过IP连接访问常见的第三台机器。)