添加软连接
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
添加git用户并设置密码
# groupadd git
# adduser git -g git
# passwd
创建公钥保存文件
# touch /home/git/.ssh/authorized_keys
# vi /home/git/.ssh/authorized_keys
每行一个公钥文件
客户端创建密码命令
ssh-keygen -t rsa -C "youremail@qq.com"
位置在C:\Users\用户名\.ssh
下.找到id_rsa.pub,把内容copy出来,一行一个用户的粘贴到上面的文件中即可。
创建代码库
# cd /home
# git init --bare test.git
Initialized empty Git repository in /home/test.git/
yum安装的git目录在usr/bin/git-shell
此外还有团队管理等参考
设置git钩子
进入我们的裸仓库的hooks文件夹,然后新建一个post-receive文件。
cd hooks/
vim post-receive
在post-receive写入以下内容:
#!/bin/bash
git --work-tree=/www/carcartalk checkout -f
其中/www/carcartalk
为你实际需要同步的站点目录。
然后修改post-receive为可执行文件(其实这就是一个脚本文件)
chmod +x post-receive
post-receive的原理就是,当远程仓库发现有用户执行了push操作,就会执行一个脚本post-receive(钩子)。其实git还提供了很多其它动作的钩子,这里我们就不深入了解了。
注意:同时你还需要修改你的web站点目录的权限,修改所属用户与用户组为git,否则钩子的权限可能会不足而导致执行失败。(你也可以通过添加git用户到相应的用户组来解决问题)
chown git:git -R /www # 修改所属用户
设置好钩子后,当你本地再次执行push的时候,你会发现你web目录的文件也同步的更新了。