一.服务器端
1.yum安装Git服务器
yum install -y git
2.创建一个git用户,用来运行git服务
useradd git
3.创建客户端登录证书
注,收集所有需要登录的用户的公钥,就是他们自己生成的id_rsa.pub文件,把所有公钥复制到/home/git/.ssh/authorized_keys文件里,一行一个。
ssh-keygen -t rsa
注意不能忘记私钥的密码。默认会生成~/.ssh/id_rsa.pub公钥文件。
cd /home/git
mkdir .ssh
cp -a ~/.ssh/id_rsa.pub /home/git/.ssh/authorized_keys
chmod 755 /home/git/.ssh/authorized_keys
4.初始化Git仓库
mkdir -p /home/data/git
cd /home/data/git
git init –bare project.git
执行以上命令 Git命令,会创建一个裸仓库,会生成branches config description HEAD hooks index info objects refs文件和目录。裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git
chown -R git:git project.git
5.禁用shell登录
注,出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
cat /etc/passwd | grep git
git:x:1002:1002::/home/git:/bin/bash
vim /etc/passwd
git:x:1002:1002::/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
6.克隆远程仓库
注,现在可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:
客户端生成id_rsa.pub文件的命令
ssh-keygen -t rsa
注,$ git clone git@git.jjhh.com:/home/data/git/project.git,其中git用户名,git.jjhh.com服务器,/home/data/git/prgject.git是仓库路径。好了,到这里服务器的搭建到这里就完成了,下面我们来安装一下客户端。
同步
cd /home/testgit/sample.git
cd hooks
//这里我们创建post-receive文件
vim post-receive
//在该文件里输入以下内容
#!/bin/bash
git –work-tree=/home/www checkout -f
//保存退出后,将该文件用户及用户组都设置成git
chown git:git post-receive
//由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限
chmod +x post-receive