Git - git是否需要在服务器上?
我已经阅读了很多信息,但仍然无法理解。假设我们有服务器机器和客户端机器。客户端通过ssh连接到服务器。对于git,服务器上没有任何身份验证。我认为最简单的配置 - 有三个客户端和一个服务器。在服务器上的git仓库存储Git - git是否需要在服务器上?
我们需要在服务器上安装git吗?我很困惑,因为git push
和git clone
命令是在客户端使用git执行的。
正如其他人所指出的,你不需要一个“服务器”在这个意义上“一个大机器的地方在互联网上”,但如果您使用git push
,您在其上运行的计算机git push
在技术上是客户端计算机,而您在此操作期间推送的计算机是服务器。
当您运行git push
时,Git本质上运行ssh [email protected] '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一起创建了一些套接字? –
并非如此:它通过连接到SSH连接的stdin/stdout进行通信。如果你的问题是“我应该在服务器上打开哪些端口”,那么你需要的只是SSH。就网络而言,它只是一个SSH连接。 –
非常感谢。你甚至无法想象我无法解决这个问题多久。 –
Git是分布式版本控制。你不需要有服务器。你和你的朋友可以使用git pull和git push在没有服务器的情况下使用你的2台机器(分布式版本控制的优势)。
您可以随时使用免费(小型团队)服务器一样https://bitbucket.org/
只是为了增加已经在这里很好的答案。
当涉及到git的'服务器'的概念是混乱。我们喜欢考虑在我们认为服务于此的技术生活中存在一些“生活”的中心点。我们觉得这个想法很舒服(对或错)
作为一个分布式系统,git-ball的每个克隆副本在技术上都是存储库。
这就是说,它仍然是一个非常好的主意,有一些“中央”控制你的仓库。
Bitbucket或github,或者甚至是你自己的盒子都可以作为'主'存储库。
git的专业用途通常是用'master'回购组织的,在bitbucket上说,它只能由pull requests写入。团队成员将分配存储库,完成他们的工作,然后在提交到他们的自己的存储库后,向“主”回购商发出拉取请求。然后可以进行同行代码审查,并将成功的请求合并到主存储库中。
这促进了很多良好的做法,也意味着你有一个很好的清理存储库备份在某人elses服务。
我们(在我的组织中)可能有超过100个以这种方式运行的项目,在许多语言中运行得非常好。
有几个工作流程以此为基础。看看here为合理很好的解释。
这取决于你想用服务器上的git做什么... – deceze
@deceze我认为最简单的变体三个客户端和一个服务器。在服务器上存储git repo。 –
你会在这里找到一些有用的信息:https://git-scm.com/book/en/v1/Git-on-the-Server – xbonez