0

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

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

4

2 回答 2

2

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

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

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

你如何做到这一点在某种程度上取决于你以后想做什么。如果您希望您的英国朋友能够将更改推送到服务器上的存储库,我建议您将服务器设置为 SSH 服务器并为您的朋友提供一个帐户。(有其他方法可以启用读写访问,例如使用 WebDAV;如果您在 Web 上四处搜索,您应该不会很难找到它们。)Ubuntu 服务器指南有很好的说明,将您的服务器设置为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是您需要打开的端口号。请注意,您需要是 root -sudo -i如有必要,请先运行。此外,当您重新启动服务器时,此规则可能会自行重置;在网上四处寻找您的 GNU/Linux 发行版如何处理持久性 iptables 规则。

如果您不使用 iptables,则需要在 Web 上四处搜索,找到一些防火墙文档,并弄清楚如何打开相关端口。

第 3 步:在 Internet 上找到您的服务器

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

第 4 步:将克隆 URL 提供给您的朋友

所以你已经在你的服务器上拥有了你的存储库,你已经准备好为它提供服务,你已经打开了你的防火墙,你已经为你的服务器设置了某种域名。现在,您需要克隆 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 访问,他或她应该能够将更改推送回它。

于 2012-09-11T02:01:23.063 回答
0

几个选项:

  1. 使用一些在线驱动器,如谷歌驱动器或保管箱来存储存储库。

  2. 使用一些免费的 ddns 提供商来获取您的域名并设置 ssh 服务器或 http git 服务,如 Benjamin 所述。

于 2012-09-11T02:14:47.450 回答