SSH协议下的Git远程仓库搭建与使用实例
在上一篇教程中,我们学习了如何通过本地协议在文件系统上托管一个中央仓库。本教程将介绍如何通过SSH协议实现相同的功能。我们将在Linux Mint机器上设置远程仓库,并演示如何从Windows 10机器(作为客户端)克隆、拉取和推送仓库。
服务器上的SSH和Git设置
要通过SSH托管Git仓库,我们需要在Linux机器上运行SSH服务器,并安装Git。
设置SSH服务器
登录到Linux Mint服务器。检查SSH服务器是否已安装并运行:
joe@mint-smtx:~$ ps -A | grep sshd
- 1
如果没有输出,则需要安装OpenSSH。首先更新包列表:
joe@mint-smtx:~$ sudo apt-get update
- 1
然后安装OpenSSH服务器:
joe@mint-smtx:~$ sudo apt-get install openssh-server
- 1
安装完成后,sshd应该正在运行。再次检查:
joe@mint-smtx:~$ ps -A | grep sshd
- 1
现在我们可以通过SSH访问服务器。
安装Git
检查Git是否已安装:
joe@mint-smtx:~$ git --version
- 1
如果未安装,可以通过以下命令安装:
joe@mint-smtx:~$ sudo apt install git
- 1
再次检查Git版本:
joe@mint-smtx:~$ git --version
- 1
在服务器上创建Git远程仓库
在用户主目录下创建名为my-project.git
的文件夹,并将其初始化为Git裸仓库:
joe@mint-smtx:~$ mkdir my-project.git
joe@mint-smtx:~$ cd my-project.git/
joe@mint-smtx:~/my-project.git$ git init --bare
- 1
- 2
- 3
现在,我们可以通过SSH访问和使用这个裸仓库。
获取服务器IP地址
我们需要知道Linux服务器在本地网络中的IP地址,以便客户端可以通过SSH访问。使用ifconfig
命令获取IP地址:
joe@mint-smtx:~$ ifconfig
- 1
在客户端机器上创建项目
现在让我们登录到Windows 10客户端机器,并使用Git Bash for Windows创建示例项目:
joe@jpc MINGW64 /d/git-example
$ mkdir my-project
$ cd my-project/
$ git init
- 1
- 2
- 3
- 4
初始化空的Git仓库,并添加readMe.txt
文件:
$ echo test-content > readMe.txt
$ git add -A
$ git commit -m "adding project"
- 1
- 2
- 3
通过SSH从客户端推送项目到远程仓库
使用push
命令推送项目:
$ git push ssh://192.168.0.13/home/joe/my-project.git master
- 1
我们使用了完整的路径ssh://192.168.0.13/home/joe/my-project.git
作为前缀。
查看远程仓库的Git日志
我们可以使用PuTTY或Git Bash for Windows的SSH客户端访问服务器,而无需再次登录到服务器机器:
$ ssh joe@192.168.0.13
joe@mint-smtx:~$ cd my-project.git/
joe@mint-smtx:~/my-project.git$ git log
- 1
- 2
- 3
日志显示了预期的提交。
从新客户端克隆远程项目
在客户端机器上,创建一个新的目录表示另一个客户端,并使用SSH克隆远程项目:
$ mkdir other-client
$ cd other-client/
$ mkdir my-project
$ cd my-project/
$ git clone ssh://192.168.0.13/home/joe/my-project.git .
- 1
- 2
- 3
- 4
- 5
推送新更改
在新客户端项目中添加新文件并推送到中央仓库:
$ echo some-content > newFile.txt
$ git add -A && git commit -m "new changes"
$ git push origin master
- 1
- 2
- 3
这次我们使用了仓库引用名称origin
而不是整个URL。
再次检查远程仓库的Git日志
$ ssh joe@192.168.0.13
joe@mint-smtx:~$ cd my-project.git/
joe@mint-smtx:~/my-project.git$ git log
- 1
- 2
- 3
新更改显示在日志中。
拉取新更改
转到原始客户端项目并从远程仓库通过SSH拉取新更改:
$ git pull ssh://192.168.0.13/home/joe/my-project.git
- 1
现在,原始客户端项目中包含了新文件newFile.txt
。
通过本教程,我们学习了如何在本地网络中通过SSH协议设置和使用Git远程仓库,以及如何在客户端之间同步项目更改。希望这对你的项目协作有所帮助。