1、先说一下 如何 通过 MAC终端利用SSH协议科隆 git服务器上的 repo
要通过 SSH 克隆一个 Git repository,我们可以像下面这样指定 ssh:// URL :
$ git clone ssh://user@server:project.git
或者我们也可以不指定一个协议 — 如果没有显式指定的话 Git 假设是 SSH:
$ git clone user@server:project.git
我们也可以不指定一个用户,这样的话 Git 会假设是当前登录的用户(和使用 SSH 命令的情形类似)。
2、架设一个 基于 SSH 的git 服务
其实质就是 生成一个 裸 的 Repository 放到SSH服务器上(完了,原理就这么简单)
SSH服务根本就不用配置,MAC OS 上现成的 。
开启方法 -> System Preference -> Sharing -> Remote Login (checked) 这样就可以了
生成一个裸的 Repository
假设 my_project 是我们在本地的一个 git Repository 项目目录,通过使用 --bare
参数生成只包含 git 信息的裸的项目拷贝
$ git clone --bare my_project my_project.git
如果你没有 my_project 这样的目录,那么没关系,你用 Xcode 创建一个 工程,勾选 git 版本控制,创建好后的目录就可以用
也可以随便找一个 目录 ,终端 cd 进去之后直接 git init 就好了
通过 scp
命令把 git 拷贝存储到服务器
现在我们已经有了一个裸的 Repository 的拷贝,下一步就是把它放到服务器上。假设我们已经有了一个名为git.example.com
的服务器,并且已经可以通过 SSH 进行访问。假设我们也在服务器的/opt
目录下建了一个名为 git
目录专门用来存放 git 项目信息。我们就可以像下面这样通过拷贝一个裸的 Repository 到服务器上来设置一个新的 Repository:
$ scp -r my_project.git user@git.example.com:/opt/git
需要注意的是,如果我们给 SSH 设置了不同的访问端口(不是默认的 22),比如说是8080,那么我们需要用-P 8080
参数来指定 SSH 使用的端口。
$ scp -r -P 8080 my_project.git user@git.example.com:/opt/git
使用服务器上的 git
这时候,其他也具有到同一台服务器 SSH 访问权限的用户就可以通过运行下面的命令来克隆我们的项目啦,要求至少对 /opt/git
目录具有读取权限:
$ git clone user@git.example.com:/opt/git/my_project.git
这里同样要注意 SSH 端口的问题,如果不是默认的 SSH 端口,要像下面这样运行命令(注意没有省略 ssh://,以及 8080 端口号放置的位置)
$ git clone ssh://user@git.example.com:8080/opt/git/my_project.git
剩下的就是和通常 git 的用法一样了,git pull
git push
等
$ git pull ssh://user@git.example.com:8080/opt/git/my_project.git