Git: Git服务器如何发现哪个分支正在推送



我运行一个git服务器,并设置了一些预接收钩子。当有人push并且这个钩子被调用时,我想知道他们在哪个分支上。

是否有一系列的git命令允许我这样做?这对我的工作至关重要。

Git push不会假定任何给定的分支在本地签出;实际上,它可能是您正在推送的裸存储库。正如Etan Reisner所提到的,您的脚本将自动收到stdin上ref更新的列表,可以用来告诉哪些分支有新的提交。

下面是一个预接收钩子的简单示例

#! /bin/sh
while read oldrev newrev refname
do
    echo "$oldrev $newrev $refname"
done

refname包含服务器上的目标分支refspec(即refs/heads/master)

最新更新