为什么合并后的git hook没有运行?

时间:2014-12-11 10:59:03

标签: git github merge githooks

我只是想运行一个git hook(合并后)来验证最近拉动中发生了什么变化。

这是我的合并后脚本

#/usr/bin/env bash

echo "======> following are changes made to local repo <======"

git fetch && git log ..origin/master --pretty=format:"%s - %ar by %an (%h)"

echo "=======> ****************** <========"

我已经提供了必要的文件权限chmod +x post-merge

当我手动运行时,

命令git fetch && git log ..origin/master --pretty=format:"%s - %ar by %an (%h)"运行完美。

但当我做git pull origin master时,它只显示

echo "======> following are changes made to local repo <======"
echo "=======> ****************** <========" 

由于git pull执行git fetchgit merge,我尝试使用

#/usr/bin/env bash

    echo "======> following are changes made to local repo <======"

    git log ..origin/master --pretty=format:"%s - %ar by %an (%h)"

    echo "=======> ****************** <========"

我哪里出错了?

git version 1.9.1

由于

1 个答案:

答案 0 :(得分:4)

因为post-mergegit pull后执行,即执行post-merge时,你的HEAD与origin/master相同,所以你得到空的输出。

试试这个:

#/usr/bin/env bash

echo "======> following are changes made to local repo <======"

git fetch && git log ORIG_HEAD..origin/master --pretty=format:"%s - %ar by %an (%h)"

echo "=======> ****************** <========"

键是ORIG_HEAD,这是危险操作之前HEAD的最后一个值(包括合并)

了解有关ORIG_HEAD阅读HEAD and ORIG_HEAD in Git

的更多信息