Git远程本地

时间:2013-04-15 15:37:24

标签: git git-gui

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

有没有办法通过我的Windows 7桌面计算机使用GitGUI连接到我的网络主机的Git安装?

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

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

使用SSH与Git进行

更新

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

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

  1. 客户端与托管目标Git仓库的计算机上运行的SSH服务器进程进行SSH连接。通常这是使用所谓的pubkey身份验证完成的。
  2. 建立连接后,客户端告诉对方产生一个特殊的Git进程,然后与本地Git进程通信,SSH进行交换 - 经过身份验证和加密。
  3. 还有两个其他位对于让我们进一步发展是必不可少的:

    • 虽然SSH支持多种“服务”(例如,SFTP-- FTP的安全版本,并制作普通的TCP隧道),但最常见的用例是远程启动进程,最常见的是case它是一个shell(这就是它毕竟命名为SSH的原因 - 一个Secure SHell)。

      启动此类远程进程时,它将使用登录用户的凭据。因此当登录到SSH服务器时 - “手动”或Git为你做这个 - 在远程服务器上启动一个shell,它使用远程<的凭据/ em>您认证为的用户。

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

      这样的URL
      ssh://user@server/path/to/the/repo.git
      

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

      /path/to/the/repo.git
      

      此回购路径是服务器上的物理路径。所以是的,就是这么简单:你不必调整某种配置文件,或者告诉Git repo的位置,而只是在你的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
      
    6. 要验证Git在服务器上正常工作,只需尝试类似

      的内容即可
      ssh user@server "git --version"
      

      plink user@server "git --version"
      

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