git是一个版本管理工具。服务端搭建分几步。

1、安装git

方式1:yum安装:yum install git
这种方式安装简单,但是安装的版本较低,当前安装的版本只是1.7.1

方式2:编译安装:
下载源码 :直接去github上下载:wget https://github.com/git/git/archive/master.zip
解压: unzip master.zip

cd git-master/
 make configure
 make
 make install

如果make configure的时候报和libiconv相关的错。那就是当前系统缺这个库。要安装libiconv:

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
 tar -zxvf libiconv-1.13.1.tar.gz
 cd libiconv-1.13.1
 ./configure
 make
 make install

装完libiconv以后,git编译的依赖库有了,需要回到git的目录,重新configure一下git:
make configure –with-iconv=/usr/local/share/doc/libiconv
–with-iconv参数就是要指定iconv包的位置。这个位置就是刚才安装libiconv的位置。
如果不知道在哪里,可以用命令搜索这个文件:
find / -name libiconv
configure完了,继续make 然后make install
如果出错,一般都是依赖库缺少。安装依赖库就行。

2、配置git服务
方便起见,在本文里客户端使用ssh协议和服务端交互。因为系统默认就开启了ssh服务,如果用http协议就需要装apache,比较麻烦。
由于使用了ssh,服务端的授权使用了linux本身的授权管理,所以为了使用git,我们需要给服务器上创建用户。
专门建一个用户组叫git:
groupadd git
在组下建一下用户叫git:
命令格式:
useradd -G git xxx -p yyy -s /usr/local/bin/git-shell
xxx是用户名,这里改成git。yyy是密码。
-s后面跟这个shell表示用户登录以后要使用的shell,因为这个用户登录就是为了使用git的,shell要用git提供的shell。这个在第一步安装了git之后就有了。如果不知道shell路径在哪里,可以执行命令查找:
which git-shell
最后,我们的命令是这样:
useradd -G git git -p 123456 -s /usr/local/bin/git-shell

3、服务器上初始化git

cd /home/git
 mkdir projecta.git
 cd projecta.git
 git init –bare
 cd ../
 sudo chown -R git:git projecta.git/

创建了用户git以后,home目录下就会多一个文件夹叫git(和用户名相同的)。进入这个目录,然后我们建一个自己项目的文件夹,比如projecta.git。
然后用git init命令初始化一下。
最后一个命令,是确定git这个用户有权限操作这个项目目录。

4、配置免密码登录
为方便,避免每次登录都要输入密码,就像ssh linux服务需要每次输密码,会很麻烦。所以我们要配置一下免登录,这个和ssh时的配置完全相同。这个类似教程有很多,如:http://www.2cto.com/os/201205/133514.html
首先,在要登录服务器的机器上生成一个RSA公钥,不同的系统,软件有不同的方法,但大同小异,可搜索关键词“linux 免密码 登录”等。
以MAC为例:
cd ~/.ssh/
.ssh目录没有可自己建
ssh-keygen -t rsa
有提示直接回车确认
在这个目录下会生成id_rsa.pub文件,这个就是我们需要的公钥。
cat id_rsa.pub
看到有一个大长字符串。
把这个添加到服务器的git用户下。操作:
登录到git服务器以后,
cd /home/git
cd .ssh/
.ssh目录没有可自己建,看目录下有没有一个文件叫:authorized_keys,没有可以自己建,有的话编辑这个文件。
在最下面把刚才cat id_rsa.pub命令看到的大长字符串复制进去,记得要换行再粘贴进去,不要直接粘在原文件的后面。

免登录的思想可以简单理解为,每次ssh的时候,客户端都会随着提交一个长串到服务器上,服务器就去这个用户的目录下验证一下,有没有符合的串,有的话没密码就能登录了。当然实际情况下,是有加解密过程的。

5、客户端使用
获取代码:
git clone ssh://git@xxx.com/~/projecta.git
注意这个命令里@前面的git是用户名,表示要以git这个用户的名义登录。@后面的xxx.com是能访问到这个机器的域名,IP也是可以的。
~/projecta.git是版本库的地址。其中~表示用户git的home目录。也就是前面提到的/home/git,所以完整路径就是:
/home/git/projecta.git
如果提示没找到这个版本库,就要看一下,服务器上有没有这个目录了。

6、添加新用户
如果有新的开发人员加入,只需要把这个用户的公钥,添加到/home/git/.ssh/authorized_keys文件里就OK了。

7、添加新项目
重新操作步骤3,只需要mkdir projecta.git这个命令里的目录名称换一下:
mkdir xxx.git
版本库地址对应就是:
ssh://git@xxx.com/~/xxx.git

新建 git 版本库脚本



#!/bin/bash projectName        =        ""         read         -p         "Please enter project name :" projectName        if         [         "$projectName"         !=          ""         ]         then                     echo         "Creating project $projectName..."             cd         /home        /git                     if          [         -d         "$projectName.git"         ]        ;then                         echo         "$projectName.git exists,exit now. create failed."        ;                     else                         mkdir         -p         $projectName        .git                 cd         $projectName        .git                 git init         --bare                 sudo         chown         -R git        :git         /home        /git        /        $projectName        .git             fi        else                     echo         "Project name is need, no project is created."         fi

作者是baiyuxiong