通过Internet主机Git代码

时间:2012-09-10 22:54:20

标签: git

我在我的服务器(位置US)上创建了Git存储库。现在我需要一个位于英国的人可以访问我的存储库并在他的PC中克隆它。可能吗?

我不能拥有静态IP地址,也不知道SSH设置?

2 个答案:

答案 0 :(得分:1)

这当然是可能的,并且有各种不同的方法可以做到这一点。在这个答案中,我试图尽可能描述您的选择,并根据我对您的情况的(有限的)了解提供我自己的建议。

第1步:提供您的Git存储库

你的服务器上有你的Git存储库 - 太棒了。但是,您在英国的联系人无法克隆您的服务器:当他或她试图这样做时,他或她的连接将被拒绝,因为您的服务器不知道如何处理它。您需要明确告诉您的服务器如何为您的Git存储库提供服务。

你如何做到这一点取决于你以后想要做什么。如果您希望您的英国朋友能够将更改推送到服务器上的存储库,我建议您将服务器设置为SSH服务器并为您的朋友提供帐户。 (还有其他方法可以实现读写访问,例如使用WebDAV;如果你在网上搜索,你应该没有找到它们。)Ubuntu Server Guide有关于设置服务器的良好指示作为SSH服务器,以及如何添加新用户。

另一方面,如果您的英国联系人只需要对Git存储库的读访问权限,您可以使用任何Web服务器来为您的Git存储库提供服务。 Pro Git有一个很好的部分,关于设置Git与Apache一起工作,你可以在Web上找到其他Web服务器的指令,例如lighttpd或nginx。请注意,您需要将存储库放在Web服务器实际为其提供服务的位置 - 这在Apache的DocumentRoot内部,以及其他类似服务器的位置。

或者,您可以使用Git协议设置Git自己的服务器来提供存储库。 Pro Git 也来自这里。

第2步:打开防火墙

无论您使用的是SSH,Web服务器还是Git服务器,都需要在防火墙中打开一个端口以进行连接。如果没有人可以连接到您的服务器,没有人可以读取您的存储库如果您使用的是SSH,则需要打开TCP端口22;如果是Web服务器,端口80;如果Git服务器本身,端口9148。

如果你正在使用iptables,你可以运行

  

iptables -A INPUT -p tcp -j ACCEPT --dport port_number

其中 port_number 是您需要打开的端口号。请注意,如果需要,您需要首先运行sudo -i。此外,当您重新启动服务器时,此规则可能会重置;浏览一下Web,了解你的GNU / Linux发行版如何处理持久的iptables规则。

如果您不使用iptables,则需要在网上搜索,找到防火墙的一些文档,并找出如何打开相关端口。

第3步:在Internet上查找服务器

您提到您没有静态IP地址,这没关系。但是,如果您希望Git正常工作,您需要能够为您在英国的朋友提供某种静态标识符。您应该使用免费的动态DNS名称,其中有许多选项。我自己从未使用过任何一种,所以我不能特别推荐任何一种;也许其他StackOverflow用户有一些建议。

第4步:为您的朋友提供克隆网址

所以你的服务器上有你的存储库,你已经设置好服务它,你的防火墙已打开,你的服务器有某种域名。现在,您需要克隆URL,您的英国联系人将传递给git-clone的URL以克隆您的存储库。这取决于您在步骤1中做出的选择 - 如果您已设置SSH,则克隆URL为

  

SSH:// friend's_username @ your_server_domain_name 的: path_to_repository

其中 friend's_username 是您为朋友设置的用户帐户的名称, your_server_domain_name 是您在步骤3中为服务器获取的域名,并且 path_to_repository 是共享存储库的实际Unix文件系统路径。

另一方面,如果您使用的是Web服务器,则克隆URL是HTTP URL:

  

的http:// your_server_domain_name / 存储库

其中 repository 是存储库的路径,从Web服务器的DocumentRoot开始。

如果您使用的是Git服务器,则克隆URL以git://:

开头
  

GIT中:// your_server_domain_name / repository_name

其中 repository_name 是存储库的路径,从Git服务器的目录开始 - 通常是/ opt / git。

此时,你已经完成了。您的朋友应该能够使用git-clone来克隆您的存储库,如果您正确设置了SSH访问权限,他或她应该能够将更改推送回来。

答案 1 :(得分:0)

有几个选择:

  1. 使用谷歌驱动器或Dropbox等在线驱动器存储存储库。

  2. 使用一些免费的ddns提供程序获取您的域名并设置ssh服务器或http git服务,就像Benjamin所说。