创建和/或推送新分支时Git挂钩

时间:2013-01-12 20:22:54

标签: git

我想挂钩创建一个新的分支。创建分支时或第一次完成时。一种或两种可能吗?

2 个答案:

答案 0 :(得分:14)

接受的答案是使用update hook。我不确定这对每个人都有帮助,因为那是一个服务器端钩子。如果你推动你的新分支,它会工作,但如果保持纯粹的本地呢?

我正在创建永不推送的本地分支,因此我使用的是post-checkout。创建分支后,通常不会在做任何其他操作之前检查它吗?当我检测到新分支时,我会修改它并自动添加提交。之后,我可以通过是否有提交历史来确定这是否是结帐时的新分支。

我是这样做的(我的钩子是bash):

true=1
false=0

isNewBranch()
{   
    local logQuery=$(git log --all --not $(git rev-list --no-walk --exclude=refs/heads/$(getBranchName) --exclude=HEAD --all))  
    if [ -z $logQuery ]; then 
        echo $true
    else
        echo $false
    fi  
}

getBranchName()
{
    echo $(git rev-parse --abbrev-ref HEAD)
}

答案 1 :(得分:8)

这是更新挂钩,它为新的refs得到零sha,分支会说head不是标签