Git作为分布式的源码管理工具,已经受到了越来越多人的青睐。和SVN的中心化服务不同,Git服务主要是将各个客户端的源码版本进行同步,类似于共享目录的作用,只是为了方便不同开发人员将各自的版本进行交换,不像SVN那么依赖于服务器。现存的Git服务器有Github,码云之类的,不过如果涉及到代码保密,不想上传到其他第三方公司托管,那么就可以自己搭建一个Git服务。 搭建一个Git服务有多简单呢?本文以一个树莓派为例,描述如何在Linux操作系统上创建Git服务。
安装git
输入命令:
1 | $ sudo apt-get install git |
---|
创建账号
- 添加一个用户,名字叫git,
$ sudo adduser git
,仅作为git服务使用,这里账号名其实是没有要求的,这个名字只会影响你的项目地址 - 修改该账号的默认bash,将该账号的默认bash设置为git-shell,这样该账号只能作为git使用,不可登录
输入命令
sudo vim /etc/passwd
,找到这一行(你刚建完账号,应该在最后一行)git:x:1001:1001:,,,:/home/git:/bin/bash
, 将其修改为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
保存
创建项目
可以在任意位置创建一个项目,比如这里选择/home/git在此目录下执行命令 sudo git init --bare test.git创建一个test项目修改该项目的权限为git所有, sudo chown -R git:git test.git到这里你的项目已经创建成功了,地址是git@你的服务器ip:home/git/test.git,如果你的ssh端口不是默认的22,那就使用这个地址ssh://git@你的服务器ip:ssh端口/home/git/test.git
创建访问公钥
现在你去clone这个项目的时候,会提示你输入git的登录密码,为了避免每次push或者pull的时候到要输入密码,你可以把客户端的公钥添加进服务器。
- 在客户端执行命令
$ ssh-keygen
生成公私钥对,如果有的话就不用生成了。生成的文件在用户目录下的.ssh文件夹下面,会有2个文件id_rsa
和id_rsa.pub
,id_rsa.pub
就是你的公钥,id_rsa
是私钥,这个文件内容不要泄露; - 在服务器的/home/git/.ssh下创建文件
authorized_keys
,如果.ssh目录不存在就创建一个,注意这里的/home/git
是你的git账号的工作目录,你要用哪个账号作为git登录,你就到哪个账号的工作目录下; - 将客户端的id_rsa.pub内容粘贴进
authorized_keys
中,一个客户端占用一行,多个客户端就添加多行。比较坑的是,我用复制粘贴并不会成功,所以采用其他办法:将id_rsa.pub
直接传到服务器上,然后执行cat id_rsa.pub >> ~/.ssh/authorized_keys
追加到文件中。
结束
到此,一个Git服务已经搭建完毕
使用$ git clone git@你的服务器ip:home/git/test.git
把项目克隆到本地即可,随后可以正常push和pull
全部完成之后,后面再添加项目仅需要执行第3个步骤(创建项目)即可。