SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签115

  • 分类37

  • 归档317

  • 关于

  • 搜索

Git:推送项目到远程仓库并触发执行sh脚本

发表于 2022-11-08 更新于 2022-12-09 分类于 计算机 , 技术 , Git 阅读次数: Valine:
本文字数: 1.7k 阅读时长 ≈ 2 分钟

  目前我服务器上部署了多个服务程序,为了实现本地一键推送+自动部署到功能,基于Git的钩子功能实现了一套解决方案。

创建本地仓库
  在本地项目文件夹testProject下执行:

1
git init

创建master分支

1
2
3
4
5
git add *
git commit -m "init"

git branch master
git checkout master

  master分支需要在初次commit以后才能创建。

创建远程仓库
  在远程服务器创建文件夹:testProject.git

1
git init --bare

  在testProject.git/hooks/下创建post-receive文件:

1
2
3
4
5
6
7
8
9
10
11
echo "post-receive hook is running..."

GIT_REPO=/home/root/testProject.git
TMP_GIT_CLONE=/tmp/testProject
RUN_DIR=/home/root/testProject

rm -rf $TMP_GIT_CLONE
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${RUN_DIR}/*
cp -rf ${TMP_GIT_CLONE}/* ${RUN_DIR}/
cd ${RUN_DIR} && sh run.sh

  具体内容根据需求编写,我通常会按照上面的模板编写,将要执行的命令脚本再单独写在项目中的一个run.sh脚本下,远程推送后只需执行该脚本就行了。这样以后我要修改推送后执行的命令,只需要修改本地项目中的run.sh即可,就不用去改动远程仓库里的代码。
  在模板中执行了一次将项目克隆到一个临时文件夹,在将临时文件夹中的内容复制到指定文件夹中的操作,如此迂回一下是为了在cp的过程中略过.git文件夹,以隐藏项目的历史信息,适用于项目中的文件要对外透出的场景,如静态页面的部署。
  创建好以后记得赋予可执行权限:

1
chmod +x post-receive

  从文件的名字中不难理解,该脚本文件将会在远程仓库接收完推送内容后触发执行。类似的,仓库的/hooks文件夹下还有基于更多触发时机的脚本模板,可以根据自己的需求算则使用。

1
2
applypatch-msg.sample  fsmonitor-watchman.sample  post-update.sample     pre-commit.sample        prepare-commit-msg.sample  pre-rebase.sample   update.sample
commit-msg.sample post-receive pre-applypatch.sample pre-merge-commit.sample pre-push.sample pre-receive.sample

推送本地仓库到远程
  第一次推送执行如下命令:

1
git push --set-upstream root@siriyang.cn:/home/root/testProject.git master

  之后每一次直接执行git push即可。

1
2
3
git add *           # 提交所有文件或者指定文件到缓冲区
git commit -m 'xxx' # 提交修改并备注修改内容
git push # 推送到远程仓库


参考资料:yearito’s Blog | Hexo搭建个人博客系列:部署上线篇

-------- 本文结束 感谢阅读 --------
相关文章
  • Git学习笔记
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: Git:推送项目到远程仓库并触发执行sh脚本
  • 本文作者: SiriYang
  • 创建时间: 2022年11月08日 - 16时11分
  • 修改时间: 2022年12月09日 - 17时12分
  • 本文链接: https://blog.siriyang.cn/posts/20221108162454id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
Git
MySQL常用函数
SQL:MySQL实现侧视图效果
SiriYang

SiriYang

努力搬砖攒钱买镜头的摄影迷
317 日志
33 分类
88 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 作品商铺

蜀ICP备19008337号 © 2019 – 2025 SiriYang | 1.7m | 25:40
0%