为什么合并后的git hook无法运行?

Apa*_*ith 3 git merge github githooks

我只是想运行一个git hook(post-merge)来验证最近一次pull中发生的所有更改。

这是我的合并后脚本

#/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 "=======> ****************** <========"
Run Code Online (Sandbox Code Playgroud)

我已获得必要的文件许可 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 "=======> ****************** <========" 
Run Code Online (Sandbox Code Playgroud)

因为同时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 "=======> ****************** <========"
Run Code Online (Sandbox Code Playgroud)

我要去哪里错了?

git版本1.9.1

谢谢

leo*_*108 5

因为在之后post-merge执行,即在执行时,您的HEAD与相同,所以输出为空。 git pullpost-mergeorigin/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 "=======> ****************** <========"
Run Code Online (Sandbox Code Playgroud)

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

有关在Git中ORIG_HEAD读取HEAD和ORIG_HEAD的更多信息

  • @ h.APP.y`changed_files = $(git fetch &amp;&amp; git log ORIG_HEAD..origin / master --pretty = format:“%s-%ar by%an%h”))`=周围没有空格 (2认同)