以下是最简单的架设git服务的办法:
1、创建git用户:

1
2
3
4
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh

2、设置以authorized_keys为认证方式:

1
$ cat /tmp/id_rsa.pub >authorized_keys #这里的id_rsa.pub是需要需要git的用户的公钥。可添加多个,逐行添加

3、用 –bare 选项运行 git init 来建立一个裸仓库,这会初始化一个不包含工作目录的仓库:

1
2
3
4
5
6
7
8
9
10
11
12
13
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git –bare init

#也可以通过本地提交创建。
$ cd myproject
$ git init
$ git add .
$ git commit -m ‘initial commit’
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master

4、用 Git 自带的 git-shell 工具限制 git 用户的活动范围:
#只要把它设为 git 用户登入的 shell,那么该用户就无法使用普通的 bash 或者 csh 什么的 shell 程序。编辑 /etc/passwd 文件:

1
$ sudo nano -w /etc/passwd

#找到git用户的参数,把最后一个冒号后的 bin/sh 改为 /usr/bin/git-shell (或者用 which git-shell 查看它的实际安装路径)

5、clone测试的project:

1
git clone git@git.xxx.xxx:/opt/git/project.git

这样就完成了一个最简单的git服务器的搭建。

ps:如果不是使用git用户创建和操作目录等,请务必通过chown -R git.git *设置这些目录所有者为git用户,否则容易没有权限。

如果提示没有目录,则需要在服务端创建目录并使用
git –bare init
初始化目录和git。

push时如果提示权限问题,比如error:pack-objects died of signal 13
那么要注意是不是init的目录权限问题。