首页
学习
活动
专区
圈层
工具
发布

git钩子和lefthook

TOCgit钩子和lefthook背景在项目开发过程中,我们经常需要规范化代码配置流程,此时需要一种工具,开发人员在使用git过程中按照要求的规范进行提交代码和各种代码检测或其他附加处理逻辑。...git钩子什么是git钩子通过设置钩子可以让开发人员在提交代码仓库的各个阶段进行一些自定义处理。钩子又分为git客户端钩子、git服务端钩子。...post-rewrite 钩子被那些会替换提交记录的命令调用,比如 git commit --amend 和 git rebase(不过不包括 git filter-branch)。...pre-push 钩子会在 git push 运行期间, 更新了远程引用但尚未传送对象时被调用。图片图片常见的git服务端钩子服务端钩子需要在提供git服务端进行配置。...update 脚本和 pre-receive 脚本十分类似,不同之处在于它会为每一个准备更新的分支各运行一次。

1.5K51

8.3 自定义 Git - Git 钩子

Git 钩子 和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。...客户端钩子 客户端钩子分为很多种。 下面把它们分为:提交工作流钩子、电子邮件工作流钩子和其它钩子。 NOTE 需要注意的是,克隆某个版本库时,它的客户端钩子 并不 随同复制。...post-rewrite 钩子被那些会替换提交记录的命令调用,比如 git commit --amend 和 git rebase(不过不包括 git filter-branch)。...这个钩子的用途很大程度上跟 post-checkout 和 post-merge 差不多。 在 git checkout 成功运行后,post-checkout 钩子会被调用。...pre-push 钩子会在 git push 运行期间, 更新了远程引用但尚未传送对象时被调用。 它接受远程分支的名字和位置作为参数,同时从标准输入中读取一系列待更新的引用。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Git基础笔记Git介绍

    Git介绍 Git是分布式版本控制系统 集中式VS分布式,SVN VS Git SVN和Git主要的区别在于历史版本维护的位置 Git本地仓库包含代码库还有历史库,在本地的环境开发就可以记录历史 SVN..." git config命令的--global参数,表明这台机器上的所有Git仓库都会使用这个配置,也可以对某个仓库指定不同的用户名和邮箱地址。...(work dict)和暂存区(stage)的区别 git diff --cached 可以查看暂存区(stage)和分支(master)的区别 git diff HEAD -- 可以查看工作区和版本库里面最新版本的区别...也可以通过http 协议来访问: git clone http://www.kernel.org/pub/scm/git/git.git git://协议较为快速和有效,但是有时必须使用http...协议,比如你公司的防火墙阻止了你的非http访问请求.如果你执行了上面两行命令中的任意一个,你会看到一个新目录: 'git',它包含有所的Git源代码和历史记录.

    73980

    使用git钩子实现自动部署

    git有很多钩子,分为客户端钩子和服务端钩子 下面主要使用了服务端钩子:post-receive 当 push 动作已经完成的时候会被触发,可以用此 hook 来 push notification...准备 先创建一个仓库 #先切到git用户 su git mkdir -p ~/blog.git cd ~/blog.git git --bare init 配置钩子 #进到git仓库目录 cd ~/blog.git.../hooks #配置test分支自动部署,其中-f参数:强制移动指针,忽略本地变化,使用git log是看不到提交记录的 vi post-receive #!.../bin/sh git --work-tree=/data/www/blog checkout test -f #给可执行权限 chmod +x post-receive 注意: 项目目录得有git:...git权限,git控制之外的文件/目录可以是其他权限 chmod -R git:git /data/www/blog 参考 https://www.jianshu.com/p/e4db2050305f

    65430

    Git笔记

    常用Git命令 ssh 生成命令 Git配置   配置级别:--local 项目级、--global 当前用户级、--system 系统级   用户名和邮箱 $ git config --global...$ git commit -m '第一次版本提交'  git 改变到版本库 $ git rm hello.php   将条目从缓存区和工作区中移除。...(如何撤销上次的 commit | git reset HEAD ~ 撤销上次的 commit ,从暂存移到工作区)git 取消commit (介绍了 reset 和) $ git checkout -...$ git reset --hard[--keep] 3628164 回退到3628164,同时重置暂存区和工作区[保持暂存区和工作区不变] $ git reflog  用来记录你的每一次命令(最新的命令在上面...类似于(git stash apply 和 git stash drop)两条命令。 $ git stash clear: 清空Git栈。

    54610

    Git笔记

    1.Git的全局配置 第一次安装完git后,需要配置基本信息,告诉git:我是谁?...$ git config -l 查看配置信息 $ git config --global -l 查看全局配置信息 配置全局信息:用户名和邮箱 $ git config --global user.name..."(这个文件夹绝对不能删,因为暂存区和历史区还有一些其它的信息都在这里) 在本地编写完成代码后(在工作区编写代码),把一些文件提交到暂存区 $ git add xxx 把当前仓库中某一个文件或者文件夹提交到暂存区...$ git reflog 包含回滚的信息 3.把本地仓库信息提交到远程仓库(以Github为例) 建立本地仓库和远程仓库的连接 $ git remote -v 将本地仓库与远程仓库建立连接 origin...origin master 把本地代码提交到远程仓库(需要输入github的用户名密码) $ git push origin master git clone解决了三件事:初始化仓库、和对应远程仓库保持关联

    44920

    Git笔记

    Git常用命令 命令 作用 git config –global user.name 用户名 设置用户签名 git config –global user.email 邮箱 设置用户签名 git init...初始化本地库 git status 查看本地库状态 git add 文件名 添加到暂存区 git commit -m “日志信息” 文件名 提交到本地库(将会记录版本) git reflog 查看历史纪录...git log 查看详细历史记录 git reset –hard 版本号 版本穿梭 2....分支的操作 命令 作用 git branch 分支名 创建分支 git branch -v 查看分支 git checkout 分支名 切换分支 git merge 分支名 把指定的分支合并到当前分支上...远程仓库操作 命令 作用 git remote -v 查看当前所有远程地址 git remote add 别名 远程地址 添加远程仓库并为其起别名 git push 别名 分支 推送本地分支上的内容到远程仓库

    12210

    Git笔记

    通过git add 状态变为Staged. Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态....分支 # 列出所有本地分支 $ git branch # 列出所有远程分支 $ git branch -r # 列出所有本地分支和远程分支 $ git branch -a # 新建一个分支,但依然停留在当前分支...oneline # 显示所有提交过的用户,按提交次数排序 $ git shortlog -sn # 显示指定文件是什么人在什么时间修改过 $ git blame [file] # 显示暂存区和工作区的差异...$ git diff # 显示暂存区和上一个commit的差异 $ git diff --cached [file] # 显示工作区与当前分支最新commit之间的差异 $ git diff HEAD...[second-branch] # 显示今天你写了多少行代码 $ git diff --shortstat "@{0 day ago}" # 显示某次提交的元数据和内容变化 $ git show [

    70530

    git笔记

    还需执行如下步骤才能记录账号密码 git pull 复制代码 …如遇到其他情况再行补充 git清除用户名密码 git config --system --unset credential.helper...git修改提交地址 1、删除远程地址 git remote rm origin 复制代码 2、添加远程地址 git remote add origin URL 复制代码 3、拉取代码的时候出了一些问题...为你当前分支的名称 另:还可直接修改项目下 .git 文件(隐藏文件)中的 config 里面的 url git分支合并 git stash 保存分支临时更改 git stash pop 取出临时保存...dev git pull origin dev git merge --no-ff zhangzh git push origin dev git checkout zhangzh 复制代码 提交步骤...git pull git commit -m “提交备注” 切记commit 之前 先git pull git push origin master 提交完成 git pull origin

    64810

    Git笔记

    实现跨区域多人协同开发 追踪和记载一个或者多个文件的历史记录 组织和保护你的源代码和文档 统计工作量 并行开发、提高开发效率 跟踪记录整个软件的开发过程 减轻开发人员的负担,节省时间,同时降低认为错误...绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上。到2002年,整个项目组开始启用一个专有的分布式版本控制系统BitKeeper来管理和维护代码。...设置用户名与邮箱(用户标识,必要) 当你安装Git之后首先要做的事情是设置你的用户名称和邮箱地址。这是非常重要的,因为每次Git提交都会使用该信息。...:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。...执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态。

    73930

    Git笔记

    可以在GitHub下载离线版的笔记,链接如下:https://github.com/FangYang970206/GitNote,觉得不错的话,欢迎fork和star 1....Git和Github 许多人刚开始学习git和github的时候,分不清git和github的关系,以为它们是一样的,我也犯过这个错误。那么git和github分别是什么呢?...5.3 git常用命令 5.3.0 git add和 git commit 上面的git add和git commit是最重要的两个命令,它是整个版本控制中最常用的两个命令,本地版本控制流程如下...5.3.3 git log git log命令会列出每个提交的SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明。...5.3.4 git rm和git mv git rm命令用来删除文件,对文件不进行版本管理。git mv命令可以对文件重命名和移动。

    1.3K20

    Git笔记:Git介绍和常用命令汇总

    Git版本库 我们先来理解下Git 工作区、暂存区和版本库概念 工作区:就是你在电脑里能看到的目录。 暂存区:英文叫stage, 或index。...Git 配置 Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。 这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。...git init myrepo 初始化后,会在 myrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。...Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。...log --author # 查找指定用户的提交日志可以使用命令,如果你要指定日期,可以执行几个选项:--since 和 --before,但是你也可以用 --until 和 --after。

    77510

    git笔记之git log使用

    小结一下 git log 命令的使用 git log 命令形式: git log [] [..] [[--] ...]...记录过多时按Page Up、Page Down、↓、↑来控制显示 按q退出历史记录 带参时: 常用参数列举 参数 作用 -n 显示前n条 --stat 显示每次更新的修改文件的统计信息(列出修改过的文件+添加和移除行数...shortstat 显示--stat中最后的行数添加修改删除统计 -p 按补丁显示每个更新间的差异 --name-only 在已修改的提交信息后显示文件清单 --name-status 显示新增、修改和删除的文件清单...相对时间之后的日志 --before= 与上面相反 --author= 按作者显示 --oneline 每条日志的输出为一行 --pretty=raw 与上面相反(包含信息:提交ID,文件树ID,父提交ID,作者和提交者.../docs/git-log

    91630

    git学习—git log 和git diff

    http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-diff.html git diff(没有时间参数配置...) 如下命令: --对比两个分支 branchB和branchA修改的所有的文件,branchB多提交哪些内容,反之A分支多提交的内容 git diff branchA branchB --对比两个分支...branchB和branchA 中指定test.txt的不同 git diff branchA branchB test.txt --查看两个分支中内容不相同的所有文件名称 。...不加时间的参数,输入所有的不同,如图: 详细的示例过程: (1):从主干master拉出一个develop分支 (2):在develop上进行开发,新增d1,d2,test,编辑index.html和删除文件...release2暂停; (7):develop 开发在新增r2,d1编辑pom.xml (8):release2合并到develop上 对比两个分支 release1和release2两个分支:

    87120
    领券