git hook之自动化部署

news/2023/12/9 16:57:56

git hook之自动化部署

相信不少做Web的人都遇到过如何提交本地代码,自动更新服务器项目目录的问题,那么现在讲解一下怎样通过自动化工具来处理这个难题。

环境

首先你需要有一个代码版本控制工具,本文中使用git,windows用户需要安装git,而本文在osx下做讲解。

自动化部署

建立一个 git 远程仓库

# $ cd [存储远程库的项目目录]
# $ git init --bare [registry name].git
# 在这里
# 存储远程库的项目目录: ~/Documents/git 
# registry name: reminder
$ cd ~/Documents/git
$ git init --bare reminder.git
$ cd reminder.git

进入到reminder.git 目录下发现有一个hooks目录,新建post-receive

$ cd reminder.git
$ vi post-reveive

# 在post-reveive文件中添加以下内容

#!/bin/sh
unset GIT_DIR
# 服务器项目目录: /Applications/XAMPP/htdocs/webroot/
DeployPath=/Applications/XAMPP/htdocs/webroot/reminder

cd $DeployPath
git add . -A && git stash
git pull origin master

echo '部署成功'

服务器项目目录clone远程仓库

$ cd /Applications/XAMPP/htdocs/webroot
$ git clone ~/Documents/git/reminder.git

新建本地开发目录

# 在本地开发目录中添加 git 远程仓库
$ git remote add origin ~/Documents/git/reminder.git
$ touch native
$ git add .
$ git ci -m "native ci"
# 推送到远程
$ git push -u origin master

现在看一下服务器项目目录/Applications/XAMPP/htdocs/webroot/reminder下面是不是多了一个我们本地开发提交的native文件啊?


http://www.niftyadmin.cn/n/2250862.html

相关文章

软件生命周期及研 发模型

软件生命周期及研 发模型 什么是软件生命周期 软件开发全部过程、活动和任务的结构框架,是从可行性研究到需求分析、软件 设计、编码、测试、软件发布维护的过程。 软件生命周期的三个时期 软件定义 • 问题定义——要解决的问题是什么 • 可行性研究——上一阶段…

Effective前端3:用CSS画一个三角形

三角形的场景很常见,打开一个页面可以看到各种各样的三角形: 由于div一般是四边形,要画个三角形并不是那么直观。你可以贴一张png,但是这种办法有点low,或者是用svg的形式,但是太麻烦。三角形其实可以用CSS…

软件测试流程概述

软件测试流程概述 V模型 • 优点 在V模型里,强调软件开发的协作和速度,反应测试活动和分析测试 的关系,并且将软件的实现和验证有机的结合了起来,V模型,明确的界 定测试过程是存在不同阶段的。 • 缺点 但是V模型也有一…

MySQL必知必会笔记(五)插入数据 创建和操纵表

第二十章 插入数据 INSERT是用来插入(或添加)行到数据库表的。插入数据的几种方式: 1 插入完整的行 2 插入行的一部分 3 插入多行 4 插入某些查询结果 INSERT SELECT语句 INSERT INTO customers(cust_id,cust_name,cust_email) SELECT cus…

软件测试阶段

软件测试阶段 软件测试过程 • 单元测试 • 单元测试又称为模块测试,是最小单位测试 单元测试具有独立性,可以与系统其他部分分隔离出来,从而完成测试,其依据是详 细设计 其测试对象是软件设计的最小单位模块与组件&#xff0c…

后端如何将geojson 生成图片

可以使用地图可视化库(如 leaflet)来将 geojson 数据呈现为地图图像。具体来说,可以通过以下步骤来实现: 安装地图可视化库,如通过使用 npm 命令安装 leaflet:npminstall leaflet在 HTML 文件中引入地图可视化库的 CSS 样式表和 JavaScript 脚本文件:<linkrel="st…

C/S测试技术

C/S测试技术 安装包 安装/卸载 完整性&#xff0c;安装包大小是否达到要求&#xff0c;显示基本信息是否正确&#xff0c;步 骤是否明确&#xff0c;内容是否合理 首次安装 是否与其他已安装的软件冲突 各种杀毒软件&#xff08;卡巴、瑞星、360&#xff09;对安装程序的影…

B/S模式

B/S模式 B/S模式&#xff08;Browser/Server,浏览器/服务器模式&#xff09; • 是目前应用系统的发展方向。BS是伴随着Internet技术的兴起&#xff0c;对C/S架构的改进&#xff0c;为了区别 于传统的C/S 模式&#xff0c;特意称为B/S模式。在这种结构下&#xff0c;通过Web浏…

java并发编程难点

Java 并发编程中有许多难点&#xff0c;其中一些常见的包括&#xff1a; 线程安全问题&#xff1a;多线程环境下&#xff0c;如果没有足够的同步机制&#xff0c;可能会导致数据不一致的情况。 线程同步问题&#xff1a;多线程环境下&#xff0c;如何使用同步机制来协调线程之间…

PHP字符串中引用变量问题

php中字符串引用变量主要是数据库操作字符串的不同1&#xff0c;普通字符串引用变量a.外层必须引用双引号b.字符串中的变量可写如&#xff1a;$s 或者{$s}2.数据库操作字符串&#xff08;数据库操作指令&#xff09;a.字符串外层必须使用双引号b.变量必须用大括号{}&#xff08…

laravel 抽象工厂设计模式

Laravel 中的抽象工厂设计模式是一种设计模式&#xff0c;它允许你创建一组相关或依赖的对象&#xff0c;而无需指定具体的类。这样&#xff0c;你就可以将你的代码与具体的实现解耦&#xff0c;从而使你的代码更具有可扩展性和可维护性。 在 Laravel 中&#xff0c;你可以使用…

Winpcap(一)

Winpcap&#xff1a;获取网络适配器列表获取网络适配器的不同信息&#xff0c;比如网卡描述和地址的列表使用PC的一个网卡来捕获数据包向网络上发送数据有效保存数据包到磁盘&#xff0c;并通过一个接口捕获数据包&#xff0c;就如同从网卡捕获数据一样使用高级语言创建一个数据…

[NOIP2006] 提高组 洛谷P1064 金明的预算方案

题目描述 金明今天很开心&#xff0c;家里购置的新房就要领钥匙了&#xff0c;新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是&#xff0c;妈妈昨天对他说&#xff1a;“你的房间需要购买哪些物品&#xff0c;怎么布置&#xff0c;你说了算&#xff0c;只要不超过N元…

小课堂Week12 Clean Code Part1

小课堂Week12 Clean Code Part1 今天的主题是函数&#xff0c;让我们看一个函数&#xff0c;找一找其中的"不整洁"。 我们也根据这段代码&#xff0c;讨论下对于整洁代码的两个重要原则。 public static String testableHtml(PageData pageData, boolean includeSuit…

浅析AVL树算法

AVL树简介AVL树是一种高度平衡的二叉树&#xff0c;在定义树的每个结点的同时&#xff0c;给树的每一个结点增加成员 平衡因子bf &#xff0c;定义平衡因子为右子树的高度减去左子树的高度。AVL树要求所有节点左右子树的高度差不超过2&#xff0c;即bf的绝对值小于2。当我们插…

HP 8180开机风扇狂转,显示屏不显示

参考 http://forum.51nb.com/thread-1319233-1-1.html 楼主&#xff0c;同样的问题&#xff0c;自己不小心解决了&#xff0c;分享下经验&#xff1b;仅供参考&#xff1b;橡皮清理下金手指&#xff0c;OK。这个主板好像会先检测内存&#xff0c;如果有问题&#xff0c;就会出现…
最新文章