搭建git服务器需要一台运行linux的机器,我的机器的系统是Ubuntu 14.04,下面以我的机器为例介绍下git服务器的搭建过程,最后介绍一个新项目的创建过程。
一、搭建git服务器需要安装的软件:git、openssh-server、openssh-client
其中openssh-server和opensssh-client使git能够使用SSH协议在客户端和服务器间传输文件。
$ sudo apt-get install git openssh-server openssh-client
二、创建git用户
创建一个git用户,运行git服务。
$ sudo adduser git
三、添加开发者SSH公钥
进入git用户主目录,创建目录.ssh,将所有开发者的SSH公钥添加到authorized_keys中,一行一个。假设已经获得的公钥存于临时文件中。
$ su git
$ cd
$ mkdir .ssh
$ cat /tmp/id_rsa.pub>>~/.ssh/authorized_keys
每个开发者获取SSH公钥方法:
在自己机器中,找到文件~/.ssh/id_rsa.pub,如果该文件不存在,则创建SSH Key。
$ ssh-keygen -t rsa
文件~/.ssh/id_rsa.pub中存放的即为当前机器的SSH公钥。四、创建git仓库
首先创建一个裸仓库(--bare),裸仓库没有工作区,因为服务器上的git仓库纯粹是为了共享,所以不让用户直接登录到服务器去改工作区,并且服务器上的git仓库通常以.git结尾。
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init
五、禁用shell登录
需要注意的是,目前所有的开发者都能以系统用户git的身份登录服务器从而获得一个普通shell。若果想对此加以限制,需要修改passwd文件中git用户的shell值。
$ sudo vim /etc/passwd
找到类似下面的一行:git:x:1001:1001:,,,:/home/git:/bin/bash
将其改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户只能利用SSH连接对git仓库进行推送和拉取操作,而不能登录机器并取得普通shell,如果试图登录,则会被拒绝。$ ssh git@gitserver
fatal:Interactive git shell is not enabled.
...
六、新项目创建过程
1、项目leader做一个项目基本原型,推送到git服务器
$ cd
$ mkdir project
$ git init
$ git add .
$ git commit -m "initial commit"
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master
2、项目成员从git服务器获取git仓库,修改,推送
<pre name="code" class="plain">$ git clone git@gitserver:/opt/git/project.git
$ cd project
work
$ git commit -am "describe your work"
$ git push origin master
说明:
1、DNS配置
假设git仓库服务器的主机名为gitserver,服务器运行在内网。
$ sudo vim /etc/hosts
在里面加入如下一行:xx.xx.xx.xx(serverIP) gitserver
即可将gitserver指向git仓库服务器
2、查看git服务器仓库中的文件
git服务器没有工作区,文件都在仓库目录里
git ls-files --with-tree=HEAD 显示目录中有哪些文件
git cat-file -p commit-id:file 显示commit-id提交中file文件的内容