我只是想运行一个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 fetch
和git 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
由于
答案 0 :(得分:4)
因为post-merge
在 git 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