centos 搭建git 环境 自动同步和支持工作目录

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 文件

mark

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 的相关使用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容