之前一直觉得搭建git服务器非常繁琐,不过在实验了一番之后才发现,一个命令就可以了。
原理
git clone
不仅仅支持从url地址进行源码下载,还支持ssh
等方式进行数据传输,所以我们只需要开启ssh
服务后,就可以进行clone
以及push
等推送操作了。
开始
首先,我们使用ssh
登录我们的服务器,然后在你喜欢的目录下创建一个用于存储项目数据的目录:
$ git init --bare ~/gitserver/test.git
注意这里的
--bare
参数,重点。
下载
由上一个命令执行后,我们已经得到了一个git
服务器(就是一个目录),那么,我们如何clone
这个项目呢,很简单:
$ git clone username@serverhost:/home/username/gitserver/test.git
跟ssh登录一个样(所以还可以添加证书进行免密码登录clone)
只不过后边多了一个我们要克隆的项目的绝对路径。
推送
代码克隆回来修改后,我们需要推送到服务器。
和正常的git操作一样:
$ git add file.txt
$ git commit -m "test"
$ git push -u origin master
其他
有个疑问,如果在本地创建了git
服务,然后需要clone
本地的git
项目,怎么操作呢?
这种情况,直接clone
绝对路径即可!
$ git clone /path/to/gitserver/test.git
免密码推送
因为我们没设置ssh登录的key,所以每次推送都要求输入一次密码,有点麻烦。
原理很简单,和免密码登录ssh一样,生成证书,在服务器上设置证书,然后就可以在本地免密码登录(也就是免密码推送了)
生成
$ ssh-keygen
注意,请使用默认的
id_rsa
文件名,避免在登录ssh的时候加载不了密钥
配置
编辑服务端的~/.ssh/authorized_keys
文件,把刚刚本地生成的~/.ssh/id_rsa.pub
文件内容复制,填充,保存。