1

我的虚拟主机在他们的基于 Linux(我相信是 Debian)的虚拟主机服务器上安装了 Git 作为“客户端”,而不是作为“服务器”。

有没有办法通过我的 Windows 7 台式计算机使用 GitGUI 连接到我的 Web 主机的 Git 安装?

4

1 回答 1

3

“客户端”和“服务器” Git 安装之间几乎没有区别:Git 只提供了一个能够自行为 Git 存储库提供服务的程序 - git-daemon. 由于它不提供身份验证,因此它通常只安装在为可公开访问的存储库提供服务的机器上(使用免费为所有人提供的只读git://协议)。

对 Git 存储库的所有“常规”写访问都由其他软件介导——通常是HTTP[S]服务器(用于http://协议)或SSH服务器(用于ssh://协议)。该软件执行必要的身份验证和授权,然后调用低级 Git 程序来执行客户端/服务器数据交换。

因此,您应该首先决定如何访问您的存储库。

在您的情况下,我会选择 SSH:因为您的网络主机(据说)是一个基于 Linux 的 VPS,它很可能已经启动并运行了 SSH 服务器,并且您应该已经获得了一个帐户(如果没有,有是时候问了)。

故事的其余部分在这里解释(有漂亮的图片)。对您来说唯一的区别是,由于您不会使用 github,因此您必须手动将您的公共 SSH 密钥传输到您的 VPS 主机。

有关在服务器上托管 Git 的更多信息,通常可在 The Book 中找到HTTP[S]是关于Git 中改进支持的后期附录)。

在 Git 中使用 SSH 的更新。

事实上,托管一个通过 SSH 访问的 Git 存储库可能既简单又复杂,具体取决于您的设置——简单的解决方案或具有虚拟化 Git 用户和访问权限管理等的高配置服务器。

使用 SSH,Git 以这种方式工作:

  1. 客户端与运行在托管目标 Git 存储库的机器上的 SSH 服务器进程执行 SSH 连接。通常这是使用所谓的 pubkey 身份验证来完成的。
  2. 建立连接后,客户端告诉对方生成一个特殊的 Git 进程,然后与本地 Git 进程对话,SSH 执行它们的交换——经过身份验证和加密。

为了让我们走得更远,还有另外两个必须掌握的位:

  • 虽然 SSH 支持多种“服务”(例如,SFTP — 一种安全版本的 FTP,并制作普通 TCP 隧道),但它最常见的用例是远程启动进程,最常见的情况是它是一个 shell(即为什么它毕竟被命名为 SSH——一个安全的外壳)。

    当这样一个远程进程启动时,它使用登录用户的凭据。因此,当登录 SSH 服务器时(“手动”或 Git 为您执行此操作)会在远程服务器上启动一个 shell,它使用您身份验证的远程用户的凭据工作。

  • 在尝试访问远程存储库之前,Git 客户端会解析该存储库的 URL。血淋淋的细节在git-fetch手册中,但简单的事情是像这样的 URL

    ssh://user@server/path/to/the/repo.git
    

    被分解为协议部分、用户、服务器和存储库的路径,即

    /path/to/the/repo.git
    

    此存储库路径是服务器上的物理路径。所以是的,就这么简单:你不必调整某种配置文件来告诉 Git 存储库在哪里,相反,你只需在你的 URL 中指定它。

    存储库路径处理的一个有点高级的转折是可以使用特殊的快捷方式来引用远程用户的主目录。这是使用路径完成的

    /~/devel/repo.git
    

    这使得 Git 在远程用户的主目录下查找名为“devel”的目录,然后在其中查找“repo.git”目录。如果您不想留出一个特殊的目录来保存 Git 存储库,这种方法很有用。这种方法也非常适合单人项目。

    在典型的基于 Linux 的操作系统上,用户的主目录位于/home层次结构下,因此用户johndoe将其/home/johndoe作为主目录。通过 SSH 以交互方式登录后,您可以通过以下方式验证您的主目录是什么

    cd
    pwd
    

    (第一个命令将当前目录更改为主目录,第二个命令打印当前目录)。

因此,对于最简单的情况,您可以这样做:

  1. 通过 SSH 登录服务器。

  2. 在某处创建服务器端存储库:

    cd /var/tmp
    mkdir test.git
    cd test.git
    git init --bare
    
  3. 登出。

  4. 将此远程添加到您的本地存储库:

    git remote add test ssh://user@server/var/tmp/test.git
    
  5. 使用此遥控器:

    git push test master
    

要验证 Git 在服务器上工作正常,只需尝试类似

ssh user@server "git --version"

或者

plink user@server "git --version"

如果您使用的是 PuTTY 而不是 Git for Windows 随附的 OpenSSH 客户端。

于 2013-04-15T16:32:43.180 回答