问题 如果我想通过ssh访问远程存储库,那么安装Git服务器是否必要?


你能解释一下,如果我只需要在那里放置存储库并通过ssh访问它,我真的需要在远程机器上安装git服务器吗?

我的无知可能始于误解一些关键的git操作原则,所以如果有人会向我解释,我会很高兴。

我认为git的远程服务器只是一个存储文件的地方,就像我的PC的本地文件夹一样,我可以通过ssh访问远程服务器来托管我的repo而不需要在那里安装git服务器二进制文件。

那可能吗?如果没有,你能解释一下我想念的这件事吗?


1634
2018-03-31 08:29


起源



答案:


git运行所需的所有文件都存储在本地存储到结帐中(在 .git 目录)。您 可以 只需通过SSH访问您的git存储库,并有效地将其视为本地计算机上的存储库,例如通过在本地安装远程文件夹。

但是,我不确定你为什么要那样做。如果没有安装git二进制文件,你就无法做任何有用的事情。如果您只是想将存储库用于私有版本控制,那么您也可以在本地安装和运行,并使用常用的备份方法进行备份。如果您想使用存储库与其他人协作,那么您需要在服务器上提供的所有协作者都可以访问的git二进制文件。

git“服务器”和git“客户端”之间没有任何有意义的区别。它是一个分布式版本控制系统,这意味着每个结账都是一个功能齐全的版本库。


5
2018-03-31 08:40



+1表示你确实需要(在大多数情况下) 混帐 安装在远程计算机上,即使您不需要任何特殊的服务器软件 - Mark Longair
为了方便起见,我将使用远程服务器来同步我的三台PC上的工作。除了我之外没有人会使用它。所以,我想我可以通过SSH建立远程存储库,对吗? - Vladislav Rastrusny
你真的需要在远程机器上安装git来通过ssh推送它吗? - static_rtti
@static_rtti:是的,基本上 - 你只需要一小组命令(参见 git-shell(1),但安装起来要容易得多 git 而不是减少到那个集合。结果是当你通过SSH推送时,你实际上是在远程上运行Git命令。 - Cascabel
@Jefromi谢谢,我现在看到。 - Vladislav Rastrusny


答案:


git运行所需的所有文件都存储在本地存储到结帐中(在 .git 目录)。您 可以 只需通过SSH访问您的git存储库,并有效地将其视为本地计算机上的存储库,例如通过在本地安装远程文件夹。

但是,我不确定你为什么要那样做。如果没有安装git二进制文件,你就无法做任何有用的事情。如果您只是想将存储库用于私有版本控制,那么您也可以在本地安装和运行,并使用常用的备份方法进行备份。如果您想使用存储库与其他人协作,那么您需要在服务器上提供的所有协作者都可以访问的git二进制文件。

git“服务器”和git“客户端”之间没有任何有意义的区别。它是一个分布式版本控制系统,这意味着每个结账都是一个功能齐全的版本库。


5
2018-03-31 08:40



+1表示你确实需要(在大多数情况下) 混帐 安装在远程计算机上,即使您不需要任何特殊的服务器软件 - Mark Longair
为了方便起见,我将使用远程服务器来同步我的三台PC上的工作。除了我之外没有人会使用它。所以,我想我可以通过SSH建立远程存储库,对吗? - Vladislav Rastrusny
你真的需要在远程机器上安装git来通过ssh推送它吗? - static_rtti
@static_rtti:是的,基本上 - 你只需要一小组命令(参见 git-shell(1),但安装起来要容易得多 git 而不是减少到那个集合。结果是当你通过SSH推送时,你实际上是在远程上运行Git命令。 - Cascabel
@Jefromi谢谢,我现在看到。 - Vladislav Rastrusny


当然可以在没有“git服务器”的情况下进行ssh访问。
但是你需要一个ssh服务器(守护进程)。

不要混合“远程服务器”和“远程(或实际上游)repo:远程仓库可以是当前仓库(本地协议)旁边的简单目录。

Gitolite 是一个很好的例子,使用ssh的强制命令机制来管理 授权 (不访问)。
看到 没有SSH的Gitolite 意识到只有一个sshd就足以让git repo访问了。

也可以看看 Pro Git书 对于Git支持的各种协议。


4
2018-03-31 08:36





如果通过SSH操作,则不需要git服务器。诀窍是获得正确的文件权限,以便每个人都可以编辑文件。

如果你只是为自己这样做,在服务器上:

 git init --bare

如果您正在与其他开发人员一起工作,那么您需要:

 mkdir repo
 chgrp GROUP repo
 chmod g+rwxs repo
 cd repo
 git init --bare --shared=group

3
2018-03-31 08:37