Git服务器搭建

1. 环境部署

系统环境:服务器端:CentOS 6.5 ,ip:192.168.56.100 Master

客户端:CentOS 6.5 ,ip:192.168.56.101 Slave

软件版本:服务器端:源码编译安装,git-2.3.2.tar.gz

客户端:yum在线安装机制

 

2. 安装

2.1 服务器端:

#yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

wget https://www.kernel.org/pub/software/scm/git/git-2.3.2.tar.gz

#tar zxvf git-2.3.2.tar.gz

#cd git-2.3.2

#make prefix=/usr/local all

#make prefix=/usr/local install #root用户运行

 

查看版本号:git --version

git version 2.3.2

安装gitosis:gitosis为Git用户权限管理系统,通过管理服务端的/home/git/.ssh/authorized_key文件来执行对用户权限的管理,是一个python模块包

#yum install python python-setuptools

#git clone git://github.com/res0nat0r/gitosis.git

#cd gitosis/

#python setup.py install

*******************************************************************************************************************************************

yum install git


建立一个 Git用户
groupadd user
useradd -g user -d /home/data/www/ user #这是这个用户组存放的路径
chown —R user.user /home/data/


3. 创建客户端登录证书

注,收集所有需要登录的用户的公钥,就是他们自己生成的id_rsa.pub文件,把所有公钥复制到/home/data/www/.ssh/authorized_keys文件里,一行一个。嘿嘿!

1).客户端生成id_rsa.pub文件的命令 客户端:CentOS 6.5 ,ip:192.168.56.101

$ ssh-keygen -t rsa
$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NwUHeNNi+PC6KlrcJrXXDmKxRMmgHIPp79sgX6zqfdSlmNj7rBPQeyEKS9Wg8yI6jd8aG2jsUx99Vjti2VK2vEXKkRHxwID7ri69gE71RfDtv6ekafnzLo14J8hAp0spMk+N3wEAQRYDmcYo1wmnm/jMBedGrHj4NJQ1vYy1hVtJasGMSzjcMrlz9qvaluWnQ5tQjKFQVVwKsRRRzs8qTvzVhLJt4NQ+CAN45tqfsRuf58Uba9QNK7/6xSUiIKXQiILz8PMGJ3MnlV+eN3wx2aeztdevxu9plggtG05SMmd8GNVzXrN1IaxXSvz0UwjQ2kygu7aCqO8AZWH49rouw== leo@LEO-PC

2). 将 客户端的 id_rsa.pub 添加到 服务端 Git用户的根目录
服务端 操作 :
cd /home/data/www/
mkdir .ssh
vim .ssh/authorized_keys
将 服务端 id_rsa.pub 里的公钥复制进去

设置authorized_keys权限
$ chmod 600 authorized_keys 
设置.ssh目录权限
$ chmod 700 -R .ssh

 

此时可以尝试 在客户端192.168.56.101 连接 服务端 192.168.56.100
ssh user@192.168.56.100

reverse mapping checking getaddrinfo for unassigned.psychz.net [192.168.56.100] failed - POSSIBLE BREAK-IN ATTEMPT!
-bash-4.1$


4. 初始化Git仓库
在服务的选择你需要创建 仓库 的目录
su user
cd /home/data/www
git init .
git config receive.denyCurrentBranch ignore
git config --bool receive.denyNonFastForwards false
cd .git/hooks
mv post-update.sample post-update

cd ../../
初始化全局设置
git config --global user.name "Administrator"
git config --global user.email "Administrator@gmail.com"


在将所用内容纳入 Git 管理器之前 总有些是无需纳入Git 的管理 比如说一些特殊文件不想被修改等等
touch .gitignore
vim .gitignore #添加完无需纳入版本库的保存退出
git add . #添加 将整个项目纳入版本库
git commit -m 'The Git Create' # -m 后面书写的是此次添加的 核心 (文本说明)

git checkout -f # 恢复至最初的数据


忽略某些文件
一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生
成的文件,像是日志或者编译过程中创建的等等。我们可以创建一个名为.gitignore 的文件,列出要忽略的
文件模式,来看一个简单的例子:
$ cat .gitignore
*.[oa]
*~
第一行告诉Git 忽略所有以.o 或.a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现
的,我们用不着跟踪它们的版本。第二行告诉Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件
(比如Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略log,tmp 或者pid 目录,以及自动
生成的文档等等。要养成一开始就设置好.gitignore 文件的习惯,以免将来误提交这类无用的文件。
文件.gitignore 的格式规范如下:
? 所有空行或者以注释符号# 开头的行都会被Git 忽略。
? 可以使用标准的glob 模式匹配。
? 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
? 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的glob 模式是指shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配
任何一个列在方括号中的字符(这个例子要么匹配一个a,要么匹配一个b,要么匹配一个c);问号(?)
只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配
(比如[0-9] 表示匹配所有0 到9 的数字)。
我们再看一个.gitignore 文件的例子:
# 此为注释– 将被Git 忽略
*.a # 忽略所有.a 结尾的文件
!lib.a # 但lib.a 除外
/TODO # 仅仅忽略项目根目录下的TODO 文件,不包括subdir/TODO
build/ # 忽略build/ 目录下的所有文件
doc/*.txt # 会忽略doc/notes.txt 但不包括doc/server/arch.txt

posted on 2016-07-29 11:20  芒果-Vic  阅读(841)  评论(0编辑  收藏  举报