Git服务器搭建

github是免费托管代码开源的远程仓库。若不想公开代码,又不想付费,就只能创建自己的git服务器作为仓库使用。使用一台运行的linux的计算机,通过apt命令行就可以完成安装。

1.安装git

安装git:
    sudo apt-get install git
创建一个git用户组和用户,用来运行git:
    groupadd git
    useradd git -g git

2.创建证书登录

收集需要登录的用户的公钥,公钥位于id_rsa.pub文件中,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。如果没有该文件,创建它:

$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys

3.初始化仓库

选定一个目录作为仓库,假定是/home/gitrepo/allen.git,在/home/gitrepo目录下输入命令:

$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo

$ git init --bare allen.git

Initialized empty Git repository in /home/gitrepo/allen.git/

以上命令创建一个裸仓库,裸仓库没有工作区。因为服务器上的git是为了共享,不让用户直接登录到服务器上去修改工作区,并且服务器上的git仓库通常都以’.git’结尾,把owner改为git:

$ sudo chown -R git:git allen.git

禁止shell登录

出于安全考虑,前面创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。

找到如下一行:
    git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
    git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

4.克隆仓库

$ git clone git@192.168.45.4:/home/gitrepo/allen.git
    Cloning into 'allen'...
    warning: You appear to have cloned an empty repository.
    Checking connectivity... done.

192.168.45.4为git所在服务器的ip,将其修改为自己的git服务器的ip即可。

管理公钥

Gitosis

管理权限

Gitolite