git设置hooks 钩子

github是可以设置hooks的,看:在设置webhooks & services,可在Just the push event.是设定向你的服务器发请求,然后再做相应的处理。

https://help.github.com/articles/creating-webhooks

看文档:man githooks

NAME
githooks - Hooks used by Git

SYNOPSIS
$GIT_DIR/hooks/*

DESCRIPTION
Hooks are little scripts you can place in $GIT_DIR/hooks directory to trigger action at certain points. When git init is run, a handful of example hooks
are copied into the hooks directory of the new repository, but by default they are all disabled. To enable a hook, rename it by removing its .sample
suffix.

Note
It is also a requirement for a given hook to be executable. However - in a freshly initialized repository - the .sample files are executable by
default.

This document describes the currently defined hooks.

git hook 自动布署代码

假设你的项目也是跑在此台服务器上,那自动布署代码就很简单了,比如你的在线服务代码在 /var/www/demo 文件夹中。

/var/www/demo也要有写权限

你先初始化代码库:

$ git clone /opt/git/gitdemo /var/www/demo

然后你可以通过 git pull 来更新代码。

当然这样是手动了,我想要的是本地提交更新后,服务器能自动的 git pull代码到最新,于是我们就要借助 git hook了。

进入到 /opt/git/gitdemo 文件夹中,会发现 .git/hook 文件夹在里面,进入到 hook 中,里面有很多的 sample 脚本,这里我们只需要用到 post-update。

$ mv post-update.sample post-update $ vim post-update

可以看到里面其实就是一些shell脚本,你要做的就是把 git pull写进去。当用户提交后,便会调用post-update脚本的。

比如我在服务器的代码库更新后,要求对应的服务代码也要更新(进行pull操作),
则在bare仓库的hooks中的post-receive添加如下内容即可

#!/bin/sh
unset $(git rev-parse --local-env-vars)
cd WEB_DIR
git pull

这些脚本显然是可以做很多事的,只要你想得到,要了解各脚本何时调用,google吧。

注:服务器中与git用户有关的文件夹及文件,

$ chown -Rh git:git /your/git/dirs

另外文章:

最佳工具 git hook

post-update.sample 改名为post-update

然后加几行简单的代码就能实现你的需求了

例:

gitdir=/****

cd $gitdir

git checkout 对应分支

git pull

end...

时间: 2024-08-07 10:00:57

git设置hooks 钩子的相关文章

Hooks——钩子概览

(资料源于MSDN,本文仅对其进行翻译.批注.其链接为:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644959%28v=vs.85%29.aspx本文链接:http://blog.csdn.net/wlsgzl/article/details/37648721转载请注明出处并保持文章的完整性.) Hooks Overview A hook is a mechanism by which an application can

git 设置

系统乱码 项目中的编码统一设置为UTF-8编码. 设置系统的语言设置为 zh_UTF-8,把 export LANG=zh_CN.UTF-8 保存到~/.profile文件中. $ env|grep LANG LANG=zh_CN.UTF-8 使用 git add 命令添加文件名含中文字符的文件时 乱码类似: \316\304\261\276\316\304\265\265.txt 解决方案: 编辑C:\Git\etc\inputrc文件中对应的行, 查找以下2行,并修改其值, 原先: set

转:git设置过滤忽略的文件或文件夹

from: https://www.cnblogs.com/foohack/p/4629255.html git设置过滤忽略的文件或文件夹 我们一般向代码仓库提交项目的时候,一般需要忽略编译生成的中间文件以及文件夹的提交,因为它们是无用的,而且也会占用仓库的空间.一般只用提交.pro,.sln,makefile,程序源文件等编译必须用到的文件,所以是有这样的需求的. 怎么用呢?一般是在自己的本地项目底下建立一个.gitignore的文本文件,在命令行下用touch建立就可以了,然后编辑它,向里面

centos 6.8 设置svn钩子同步至web目录

1.在web目录创建项目目录 mkdir ./opt/wwwroot/项目名称 2.使用svn检出项目文件 svn checkout svn://localhost:/项目名称 3.设置svn库中钩子实施同步操作 cd ./opt/svn/repos/项目名称/hooks #进入svn项目钩子管理目录 cp post-commit.tmpl post-commit #复制钩子文件使用post-commit chmod 755 post-commit #赋予权限 3.打开post-commit文件

SVN设置更新钩子

实现SVN与WEB同步,可以CO一个出来,也可以直接用自动更新web目录的方法,我们要在svn版本库中配置钩子来实现,就是创建一个post-commit的配置文件,对其进行简单的配置,简简单单的四步就可以实现Linux下SVN自动更新web目录配置. 第一步:建立你的web程序目录 mkdir test,并且进入目录检出svn 我的做法是直接web目录检出svn再修改目录名  第二步:在项目库的 hooks/ 目录下新建 post-commit 文件 [钩子脚本] 添加脚本如下 第三步:让pos

Git设置及GitHub的使用

把github上的help略略翻译一遍.备忘. First : 安装:ubuntu 下,终端输入命令: sudo apt-get install git-core git-gui git-doc Next : 设置SSH Key 检查是否已经有SSH Key. $cd ~/.ssh 如果说没有这个目录,就直接看第三步 备份 生成一个新的SSH. $ssh-keygen -t rsa -C "email" 之后直接回车,不用填写东西.之后会让你输入密码.然后就生成一个目录.ssh ,里面

git 设置不需要输入密码

https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速 设置记住密码(默认15分钟): git config --global credential.helper cache 如果想自己设置时间,可以这样做: git config credential.helper 'cache --timeout=3600' 这样就设置一个小时之后失效 长期存储密码: git config --global credential.helper store

git设置对比工具

git查看有哪些对比工具可以设置命令: $ git difftool --tool-help 然后再设置对不工具,如: $ git config --global diff.tool bc3 $ git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe" 设置默认的合并工具设置和对比工具类似: $ git config --global merge.tool bc3 $ git

git :设置 object-c 的忽略文件

使用 git 命令行来进行版本控制的时候, 需要设置忽略文件. 这里能找到所有语言的忽略文件的内容:https://github.com/github/gitignore OBJECT的忽略文件内容: # Xcode # # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore ## Build generated build/ Deri