搭建远程服务器上的Git并自动同步代码到站点目录(www)

https://blog.csdn.net/glx490676405/article/details/78329004
https://blog.csdn.net/baidu_30000217/article/details/51327289
https://my.oschina.net/cxz001/blog/194196?fromerr=tkxr4Qya
这是借鉴的几篇文章,再结合自己实际中所遇到的问题。伪原创,索性搞个转载

cd /home/testgit/sample.git/hooks
//这里我们创建post-receive文件
vim post-receive
//在该文件里输入以下内容

#!/bin/sh

unset GIT_DIR
NowPath=`pwd`
echo "now path is :"$NowPath
GitPath="/data/www/xiangmu"
echo "git path is :"$GitPath
cd $GitPath
echo "cd git path"
git add . -A && git stash # remove local changes
git pull origin master # pull data from master
# the follow line is also ok:
# git add . && git fetch origin && git reset --hard origin/master

echo "git done"
cd $NowPath
echo "fine"
# --- Finished
exit 0

//保存退出后,将该文件用户及用户组都设置成
git chown git:git post-receive
//由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限
chmod +x post-receive

其中推送同步是可能会存在权限问题。
在这里插入图片描述linux用户添加到多个组 (git属于之前git组,也属于www组)。查看git属于git和www两个组下
chown -R www:www xiangmu --把项目放在www用户组下
chmod -R ug+wx xiangmu --给项目下文件写入和执行权限

	* 给文件或文件夹try的拥有者加可执行权限
	* $ sudo chmod u+x try
	* 给文件或文件夹try的拥有者和组成员加可读可写权限
	* $ sudo chmod ug+rw try
	* 给文件或文件夹try的拥有者和组成员除去可写权限
	* $ sudo chmod ug-r try

最后执行是发现出错,到执行git命令的时候总是提示:

remote: cd git path
remote: fatal: not a git repository: '.'
remote: fatal: not a git repository: '.'
remote: git done

检查良久才发现unset GIT_DIR莫名其妙变成了et GIT_DIR ( • ̀ω•́ )✧简直了…(要细心哟)
之所以报错fatal: not a git repository: '.'是因为“git的hooks里面默认有一些环境变量,会导致无论在哪个语句之后执行git命令都会有一个默认的环境路径,既然这样unset 掉默认的GIT环境变量就可以了。”原博(https://alfred-long.iteye.com/blog/1836347 )。

remote: cd git path
remote: fatal: Unable to create '/home/wwwroot/default/xiangmu/.git/index.lock': Permission denied
remote: error: cannot open .git/FETCH_HEAD: Permission denied
remote: git done

接下来出现了权限的问题。检查下文件所属组对不对,对应文件权限够不够
chmod -R ug+wx .git 我的是.git目录文件权限问题
chown -R www:www .git 把.git目录页放到当前组下面把(我的是www用户组)

**ps:对Linux的权限是班门弄斧,有地方做的不对的望指正。Linux权限还有很多要学习的地方 **

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值