git hook部署代码

git 提供了钩子功能,当某个操作发生时,可以执行某个动作。

ftp上传时没有文件比较,虽然可以winscp提供了同步功能但是不够强大,而且文件多了,会花费比较长的时间。

1、先在主机上搭建一个git服务器,可以参考前篇文章

2、修改post-receive

切换到git仓库,比如

cd /var/sample.git & ls

可以发现git已经给我们建好了hooks目录,并提供了模板。

进入hooks目录,vi post-receive

#!/bin/sh
git --work-tree=网站文件夹路径 --git-dir=/var/sample.git checkout -f

保存,chmod +x post-receive。

这一步会检出最新的代码,且没有.git目录。

注意,网站文件夹要存在,如果不存在会提示work-tree错误,创建这个相应目录即可。

3、修改网站文件夹权限

chown -R git:apahce 网站文件夹路径

如果用的是nginx请换成相应的用户组。

漏掉这一步会出现,“git checkout-index: unable to create file (Permission denied)”错误。

现在可以试试用git部署代码了。

github也提供了hook功能,不过还得在写相应的脚本,如果自己有服务器,可以直接在服务器上建一个git。

参考了此文

时间: 2025-01-02 15:32:35

git hook部署代码的相关文章

git环境部署代码和liux常用命令

一.测试环境部署项目常用命令: 1.ssh 账号名@ip 端口号    #登录远程服务器 2.登录yun账号: su -yun          ccpdo su         #切换root权限 3.cd 项目所在路径               #进入项目部署的路径 git status         #查看git状态 git branch        #查看当前git关联分支 git branch -a |grep <分支名>                  #-a显示所有分支 

使用 Git Hook 实现网站的自动部署

自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生.不知道大家平时都是怎么样更新自己生产环境的代码的,FTP 覆盖旧文件.服务器定时任务去 build 最新的源码,还是有更高级的做法? 目前我在使用 Git Hook 来部署自己的项目.Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用.其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 bash 脚本. 下面是

【Webhooks】使用Git的Webhooks进行服务器自动部署代码

使用Git的Webhooks进行服务器自动部署代码 本文项目地址 https://github.com/diandianxiyu/PageBlog/blob/master/%E4%BD%BF%E7%94%A8Git%E7%9A%84Webhooks%E8%BF%9B%E8%A1%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%E4%BB%A3%E7%A0%81.md 如有错误,请指正~ 前言 之前一直想做自动化运

使用git代替FTP部署代码到服务器的例子

这篇文章主要介绍了使用git代替FTP部署代码到服务器的例子,这种方法可以节省流量.节省时间,需要的朋友可以参考下 本地开发完成后,通常会在服务器上部署,有人会使用ftp,有人会使用scp, ftp和scp的时候为了方便我们通过还要tar或者zip一下, 这些做法也很不错,但是它有一些问题 1.全部更新,不管某些文件是否修改,都要重新传一下服务器,浪费时间与流量2.多台服务器的重复上传3.代码更新后,后续的一些操作不够自动化 上面的问题可以通过ssh直接远程执行命令来解决,但是需要写一些shel

使用git做服务器端代码的部署

传统部署方案     windows 远程桌面     FTP/SFTP     登录服务器pull github代码     Phing(PHP专业部署工具) git 自动部署流程图   服务器端准备工作:     0. 这些工作都在root或有管理权限的帐号下进行,下面以root为用户,切换到其他用户的时候会提示     1. 确保安装了git     2. 为了安全起见,新建一个专门用于代码部署的无特权用户                useradd -m deployuser     

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成] 标签(空格分隔): Jenkins 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦.所以出现pipeline名词. 代码质量检查完毕之后,我们需要将代码部署到测试环境上去,进行自动化测试 新建部署代码项目 点击新建 这里只需要写一下描述 执行Shell脚本 温馨提示:执行命令主要涉及的是权限问题,我们要搞明

Git自动部署

Git自动部署文件位于repository下面的hooks里的post-receive #!/bin/sh set -e git-update-server-info gitosis-run-hook update-mirrors # Check the remote git repository whetherit is bare IS_BARE=$(git rev-parse--is-bare-repository) if [ -z "$IS_BARE" ]; then echo&

Git Server &amp; Git Hook

http://ju.outofmemory.cn/entry/16893 我喜欢 github,我现在的个人代码全部是托管在上面了,但是一些公司或者某些项目不适合放入github中,你希望能有一个完全私有的仓库,如果你有一台服务器,这显然是很容易办到的事. 下面简单的描述我在某个项目中布署的一个git服务,并且本地提交更新后,服务器将自动更新代码到在线代码的仓库. 创建用户并使客户机可通过密钥登录服务器 服务器中操作: root 用户ssh登录服务器,创建一个新用户用来给git登录及其操作,比如

git开发部署流程

Git 开发部署流程 采用业界成熟方案 Git Flow 分支方式进行开发:一个经典的 Git 开发/部署流程包括几个环境:本地开发环境.线上测试环境.线上生产环境,分别对应git的本地工作环境.develop 分支.master 分支 无图言屌 本地开发环境 : 本地仓库分支工作环境 线上测试环境 : 远程 develop 分支 线上生产环境 : 远程 master 分支 先在本地进行开发,做一次完整的提交 push 到 develop 分支,进行线上测试,一切正常 push 到 master