创建和/或推送新分支时的 Git 钩子(Hook)

标签 git

我想 Hook 到一个新分支的创建。创建分支时或完成第一次推送时。一种或两种都可能吗?

最佳答案

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

我正在创建从不推送的本地分支,所以我使用 post-checkout 代替。创建分支后,您通常不会在对它进行任何其他操作之前检查它吗?当我检测到一个新分支时,我会修改它并自动添加一个提交。之后,我可以根据它是否有提交历史来确定这是否是 checkout 时的新分支。

这是我的做法(我的钩子(Hook)在 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)
    }

关于创建和/或推送新分支时的 Git 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14297606/

相关文章:

git - 在远程 repo 上删除本地 Git 分支后删除它们

代理 : remote HEAD refers to nonexistent ref, 后面的 git 无法 checkout

windows - 为什么显示 'Updating the Git index failed'

git - 错误 : Your local changes to the following files would be overwritten by checkout

Git Whatchanged - 如何查看有更改的文件的完整路径

swift - 安装用于 firebase 的 cocoapods 挂起并卡住

git - 如何查看 merge 历史?

git - 在 pull 之前提交所有内容,为什么?

git - 如何仅使用 'git log' 显示更改的文件名

git - 如何将 develop 分支重置为 master