CentOS7 Git服务器搭建

CentOS7 Git服务器搭建

服务器搭建

安装Git

1
yum install -y git

添加新用户

1
adduser git

创建空的Git仓库

1
2
3
cd /home/git
git init --bare test.git
chown -R git:git ../git

在服务器端打开RSA认证

创建用于存放客户端公钥的文件

1
2
3
4
cd /home/git
mkdir .ssh
cd .ssh
touch authorized_keys

客户端创建SSH Key

1
ssh-keygen -t rsa -C "a@qq.com"

该命令会在用户主目录的 .ssh 文件夹下生成两个文件用于保存私钥的 id_rsa 和用于保存公钥的 id_rsa.pub
windows 在 C:\Users\Administrator\.ssh 目录下

把生成的公钥导入服务器

1
cat id_rsa.pub >> /home/git/.ssh/authorized_keys

配置钩子

Git用户

创建SSH Key
1
2
sudo -u git ssh-keygen -t rsa -C "b@qq.com"
cat id_rsa.pub >> /home/git/.ssh/authorized_keys
网站目录拉取
1
2
su git
git clone ssh://git@127.0.0.1/home/git/test.git
配置钩子
1
2
cd /home/git/test.git/hooks/
vim post-receive

添加如下:

1
2
3
4
5
#!/bin/bash
export LANG=zh_CN.UTF-8
cd /home/wwwroot/www/test/
unset GIT_DIR
git pull origin master

保存后

1
2
chown git:git post-receive
chmod +x post-receive

其他用户

lnmp的环境,用户为 www

创建SSH Key
1
2
sudo -u www ssh-keygen -t rsa -C "b@qq.com"
cat id_rsa.pub >> /home/git/.ssh/authorized_keys
设置Git用户

设置了 /etc/sudoers 添加:

1
git ALL=(ALL) NOPASSWD: ALL
网站目录拉取
1
2
su git
sudo -u www git clone ssh://git@127.0.0.1/home/git/test.git
配置钩子
1
2
cd /home/git/test.git/hooks/
vim post-receive

添加如下:

1
2
3
4
5
#!/bin/bash
export LANG=zh_CN.UTF-8
cd /home/wwwroot/www/test/
unset GIT_DIR
sudo -u www git pull origin master

保存后

1
2
chown git:git post-receive
chmod +x post-receive

常用操作

回滚到任意版本操作

1
2
git reset --hard xxx # 版本号
git push -f origin master

不保留本地

1
2
git reset --hard
git pull origin master

镜像服务器后

1
sudo -u www ssh-keygen -R 127.0.0.1