Amaze UI Logo

码动指尖



git钩子(hook)


原理与流程

git用户执行git push操作

远程仓库发现有用户执行了push操作,就会执行一个脚本  post-receive(钩子)

在 post-receive 脚本中,将git仓库的代码拷贝到web站点目录下

创建git仓库

我们可以在自己的服务器上创建git仓库,有两种方式:


git --bare init (裸仓库)

git init

两者区别:


普通git仓库的目录结构就和你的代码目录结构一致,只多了.git目录,.git目录中包含了git的一些配置等数据

裸仓库只保存了一些配置信息等,肉眼是找不到我们所上传的代码的

建议使用裸仓库


执行钩子

git仓库和git裸仓库的钩子所在位置不同。


git普通仓库钩子在.git/hooks/中

git裸仓库钩子在hooks/中

钩子要做的事就是将代码从仓库中拷贝到web目录,有两种方式:


在web目录中,将git仓库的代码克隆过来:git clone xxxxx,需要部署代码的时候,执行git pull即可将代码同步过来了。

将git仓库中的代码打包,然后解压到web目录下

实现:


第一种方式实现:


在上述hooks目录中,创建post-receive文件,内容如下




#!/bin/sh

#这句话是设置项目根目录的

DEPLOY_PATH=项目路径(项目根目录)


unset  GIT_DIR #这条命令很重要

#进入项目根目录

cd $DEPLOY_PATH

#回退版本,看情况而加

#git reset --hard

git pull

#修改权限

chown 执行用户:执行用户组 -R $DEPLOY_PATH



转载原文:https://blog.csdn.net/u010837612/article/details/70825225


 git

作者  :  奕弈

喵喵喵,你在心上



评论


About ME

about me

奕弈

为了最初的心,努力奋斗,从不懈怠的学习。

我不想成为一个庸俗的人。十年百年后,当我们死去,质疑我们的人同样死去,后人看到的是裹足不前、原地打转的你,还是一直奔跑、走到远方的我?

Contact ME