Centos 7 install git
服务器环境
CentOS Linux release 7.4.1708 (Core)
cat /etc/redhat-release
1. 在服务器上安装git
yum install -y git
2. 建立一个git用户,并做初步配置
adduser git
3. 添加公钥证书
cd /home/git
mkdir .ssh
vi authorized_keys
本地生生密钥
ssh-keygen -t rsa -C "your_email@example.com"
将生成的密钥id_rsa.pub
添加到 authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAA5AQABAAABAQC1pYB1I9rlojWR7bha+sXTqbI/ZGgv4feaXMCeKK6CCHxTdUAdOsbiIuOOrk5J2uXOXNJ+YiRaMGNkCdkbI8HVMFIp6sCKjKB7qbT5lYI/RXpEbQZ1oazB2ibUaIbZf/JTiBJpK8F/s9yDeuUS3qWIfdiKUyDTH92/IJxqU1LrgzwbtLHnGSacFtnxMfu/bR1pD9vBUYTEdXrI+bFQYCK8G13iCJhGNQhU5Y89vKDSJZGb7PRyf4VPHs8fhE8grkZEaJeDs0wCmZKnaxt/lu/kNqQI7NhQmT/+WgaKhDUMdZv48SP0MnQw//jycUzo1akXH2WhgsrVFf2UtTYTX2iT your_email@example.com
4. 创建仓库
创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git
结尾。然后,把owner改为git
cd /srv
git init --bare sample.git
chown -R git:git sample.git
5. 克隆仓库
git clone git@server:/srv/sample.git
如果出现以下错误删除本地user/<yourname>/.ssh/known_hosts
文件
6. post-receive
实现自动同步到站点目录
如果你是用 git init --bare mygit.git
建立的仓库.
该仓库是没有工作目录的.但问题中你说找不到工作目录.说明远程服务可能是部署工作,需要包含工作目录.
cd /home/testgit/sample.git
cd hooks
# 这里我们创建post-receive文件
vim post-receive
./git/hooks/post-receive
文件内容
#!/bin/bash
git --work-tree=/home/www checkout -f
权限相关:
# 保存退出后,将该文件用户及用户组都设置成git
chown git:git post-receive
# 由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限
chmod +x post-receive
7. 创建支持工作目录的远程仓库
# 远程服务器初始化仓库
git init <仓库名>
# 设置允许远程接收文件
git config receive.denyCurrentBranch ignore
在远程仓库,post-receive
钩子文件中添加自动更新工作目录内容
WORK_TREE='../'
git --work-tree="${WORK_TREE}" reset --hard
:smiling_imp: 确保 post-receive
具有执行权限
后续更新gitolite
的相关使用