搭建Git服务器-Git钩子的使用

设置Git钩子

我们在本地把开发好的项目文件push到服务器时,只是提交到了创建的Git服务器创建的裸仓库中。还需要进入服务器的web运行目录,通过git pull命令拉取到web目录。从本地仓库git push项目到远程仓库,让push到远程仓库中的项目能在web目录运行起来,还需要web目录进行pull拉取下。push一次就需要pull一下,操作起来很繁琐,相当不方便。为了解决这个问题就可以使用Git中的钩子来解决该问题。
咱们已经搭建了Git服务器,并创建了/usr/local/gitdata/目录来存放仓库的。初始化了test.git的仓库文件。地址为:

git clone [email protected]:/usr/local/gitdata/test.git

进入我们的裸仓库的hooks文件夹,然后新建一个post-receive文件。

cd /usr/local/gitdata/test.git/hooks/

新建post-receive文件

vim post-receive

在post-receive写入以下内容:

#!/bin/bash
git --work-tree=/var/www checkout -f

说明:/var/www需要同步的站点目录
设置post-receive为可执行文件(在目录/usr/local/gitdata/test.git/hooks下设置)

chmod +x post-receive

说明:post-receive的主要目的是当远程仓库发现有用户执行了push操作,就会执行一个脚本post-receive(钩子)。需要修改你的web站点目录的权限,修改所属用户与用户组为git,否则钩子的权限可能会不足而导致执行失败。设置好钩子后,当你本地再次执行push的时候,会发现web目录的文件也同步的更新了。
例如web目录为/var/www
创建web目录
 

mkdir /var/www

设置/var/www的权限

chown git:git -R /var/www

本地push到git服务器仓库,然后去查看/var/www中web目录就发现同步了。

git push [email protected]:/usr/local/gitdata/test.git master

猜你喜欢

转载自blog.csdn.net/MrWangisgoodboy/article/details/129833803