在网上看了很多关于git钩子,git hooks的介绍和配置,自己研究出这一个版本,需要的朋友可以看一下。
Git 钩子
Git 钩子(hooks)是在 Git 仓库中特定事件(certain points)触发后被调用的脚本。通过钩子可以自定义 Git 内部的相关(如 git push)行为,关键点(如 git push)触发自定义的行为。Git 含有两种类型的钩子:客户端的和服务器端的。客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于接收部署提交的代码。实现服务器和本地的git互通。
Git 钩子存在于每个 Git 仓库的 .git/hooks
目录中。
Git 钩子配置:
服务器配置:
服务器创建两个仓库:
一个是远程仓库;
一个是部署仓库。
1. 远程仓库在/home下:
创建远程仓库 注意student.git名字和项目部署文件名称一样
切换到.git 初始化仓库
初始化Git裸仓库
初始化以后,出现这么多文件
2. 部署仓库是你的前端页面位置/usr/local/nginx/html/:(我的配置页面部署了nginx)
初始化需要项目文件夹的父目录为git仓库: git init
copy远程仓库到此 作为项目仓库 备用
copy以后 出现student文件夹 这就是存放前端文件得文件夹
更改该文件夹的权限
重要的一步:进入远程仓库hooks中:
cd /home/git/student.git/hooks
添加脚本:
vim podt-receive
脚本内容:
#!/bin/sh
unset GIT_DIR #很关键
NowPath=`pwd`
DeployPath="/usr/local/nginx/html/student" #存放项目的文件夹位置
cd $DeployPath
git add . -A && git stash
git pull origin master
composer install --ignore-platform-reqs
cd $NowPath
echo "同步完成"
exit 0
最后一步 更改脚本的权限:
服务器配置完毕!
开发机配置:
安装 git 配置秘钥 在github上添加公钥 这些看GIT安装和配置
进入需要同步到服务器的文件夹,打开 git Bash Here,执行git init(如果该文件夹已经是git仓库,可以不执行,我本地已是git仓库)。
本地仓库关联服务器远程仓库:git remote add origin root@116.62.63.74:/home/git/student.git
如果出现:
此时,执行:git remote rm origin 然后再次关联服务器远程仓库
在本地仓库中 建一个txt文本 模拟数据同步
进行git操作:
此时 出现脚本内容 本地已经上传到服务器成功