Git - 服务器是否需要安装 Git?

5

我读了很多信息,但仍然不理解。假设我们有服务器和客户端机器。客户端通过ssh连接到服务器。服务器上没有任何git的身份验证方式。我考虑最简单的配置 - 有三个客户端和一个服务器。在服务器上存储了git repo。

在这种情况下,我们需要在服务器上安装git吗?我感到困惑,因为git pushgit clone命令是在客户端使用git执行的。


这取决于您想在服务器上使用Git做什么... - deceze
@deceze 我认为最简单的方案是三个客户端和一个服务器。在服务器上存储git仓库。 - Pavel_K
你会在这里找到一些有用的信息:https://git-scm.com/book/en/v1/Git-on-the-Server - Ayush
3个回答

6
正如其他人指出的那样,您不需要一个“服务器”来表示“互联网上某个大型机器”,但是如果您使用git push,则运行git push的机器在技术上被视为客户端机器,并且您推送到的机器在此操作期间被视为服务器。
当您运行git push时,Git本质上会在服务器上运行ssh user@server 'git-receive-pack /path/to/repo',即在服务器上运行git-receive-pack。然后,本地的git push通过SSH连接与远程的git-receive-pack进行通信。
简而言之:在通过SSH推送时,需要在服务器上安装Git。不一定需要完整的安装,但至少需要可执行文件git-receive-pack进行推送和git-upload-pack进行获取/拉取。
也可以使用其他协议(例如webdav)将内容推送到未安装Git的远程计算机,但我不建议这样做。

感谢您的回答。git-receive-pack 是否会创建一些套接字以便与客户端 git 进行通信? - Pavel_K
并不是真正的端口:它通过连接到SSH连接的标准输入/输出进行通信。如果您的问题是“我应该在服务器上打开哪些端口”,那么您只需要SSH。就网络而言,它只是一个SSH连接。 - Matthieu Moy
非常感谢。你甚至无法想象我多久都解决不了这个问题。 - Pavel_K

1

仅补充一下这里已经很好的答案。

当涉及到 Git 时,“服务器”这个概念是令人困惑的。我们喜欢认为有一个中心点,所有东西都“驻扎”在那里,在我们的技术生活中,我们认为这个中心点就是服务器。我们觉得这个想法很舒服(无论对错)。

作为分布式系统,git-ball 的每个克隆副本在技术上都是仓库。

话虽如此,为您的存储库设置一些“中心”控制点仍然是个好主意。

Bitbucket 或 Github,甚至您自己的桌面也可以充当“主”存储库。

Git 的专业用途通常使用 Bitbucket 上的“主”存储库,只可由拉取请求进行写入。团队成员将 fork 存储库,进行工作,然后在提交到自己的存储库之后,向“主”存储库发出拉取请求。接着同行代码审查就可以进行,并且成功的拉取请求可以被合并到主要存储库中。

这促进了许多良好的实践,也意味着您在某个人的服务上备份了一个干净的存储库。

我们(在我的机构)可能有超过100个项目以这种方式运行,涉及多种语言,效果非常好。
有几个工作流程是以此为基础的。请点击这里查看一个相对不错的解释。

0

Git是分布式版本控制系统。您不需要拥有服务器。您和您的朋友可以使用git pull和git push在两台机器上工作,而无需服务器(这是分布式版本控制的优势)。

您始终可以使用免费(适用于小团队)的服务器,例如https://bitbucket.org/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接