您的位置:首页 > 其它

git服务器的简单搭建

2015-08-21 11:24 316 查看
 搭建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文件的内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: