一 安装git,设置git用户(当前操作是root用户)
# 1.安装git
yum install git
#2.创建git用户
useradd git
# 为git用户创建密码
password git
生成git仓库
#4.初始化git仓库
cd /www/wwwroot
mkdir kaoji
chown git:git kaoji/
cd kaoji
git init --bare kaoji.git
#执行初始化会输出
#Initialized empty Git repository in //www/wwwroot/kaoji/kaoji.git/
初始化成功之后就可以在本地客户端clone了(注意kaoji.git文件权限问题,不然提交不上代码)
二 本地客户端测试(可以安装source tree工具操作)
git clone ssh://git@xxxx.xxxx.xxxx:22//www/wwwroot/kaoji/kaoji.git
git clone ssh://{服务端用户}@{你的ip}:{端口号默认是22,如果不是22就写,否则不用写}{你的仓库路径}
自动同步文件脚本
试着提交一个文件看看
touch test.txt
git add .
git commit -m 'test'
git push origin master
此时你到服务器找这个test.txt文件是看不到的
(注意 --bare参数创建的裸仓库,就是没有工作区的,提交上来的文件是看不到的)
(1) 如果要创建一个可以看到项目文件的仓库就按照下面操作执行
cd kaoji.git
#这一句命令是允许文件上传到远程服务器,不执行这句,客户端无法提交文件到服务器
git config receive.denyCurrentBranch ignore
其实就是在//www/wwwroot/kaoji/kaoji.git/config文件里面添加了
接下来创建钩子
在//www/wwwroot/kaoji/kaoji.git/hooks目录下新建文件post-receive
vim post-receive
#!/bin/sh
WORK_TREE='../'
git --work-tree="${WORK_TREE}" reset --hard
#或者
unset GIT_DIR //清空git的工作目录,(没有使用该代码,报错:remote: fatal: Not a git repository: '.')
cd ..
git checkout -f
# 或者
# unset GIT_DIR #这个是必须要的,不然直接失败
# cd /www/wwwroot/kaoji/ #git制定目录,一般是你的网站目录
# git checkout dev #先切换分支
# git pull origin dev #更新分支的内容
##给post-receive执行权限
chmod 755 post-receive
chown -R git:git kaoji/
接下来在客户端执行提交文件,在/www/wwwroot/kaoji/kaoji.git仓库里面就可以看到文件啦;(注意kaoji.git文件权限问题,不然提交不上代码)
(2) 如果要创建一个自动更新的web项目按照下面操作执行
首先创建一个web项目目录例如/home/myweb/把这个目录拥有者变成git
从新更新钩子post-receive的代码
#!/bin/sh
unset GIT_DIR //清空git的工作目录,(没有使用该代码,报错:remote: fatal: Not a git repository: '.')
cd ..
git checkout -f
WORK_TREE='/home/myweb'
git --work-tree="${WORK_TREE}" reset --hard
现在在客户端提交一个文件,在/home/myweb目录下面就看到文件了,只有操作master提交才会有文件