Git post-用于推送部署的接收挂钩仅适用于 master

Git post-receive hook for push-to-deploy only works with master

我有一个远程裸 git 存储库创建如下:

@server:~$ mkdir -p /home/myuser/domain.git && chmod 770 /home/myuser/domain.git && cd /home/myuser/domain.git && git init --bare

使用 post-接收挂钩:

@server:~$ nano hooks/post-receive

钩子脚本为:

#!/bin/sh
git --work-tree=/var/www/domain --git-dir=/home/myuser/domain.git checkout -f

有权限执行:

@server:~$ chmod +x hooks/post-receive

但是,当我推送到 master 分支时,它只会更改网站。

为什么?即使我推送到另一个分支,远程 HEAD 始终是 master

默认情况下,它会检出 master 分支。

您需要指定要结帐的分支,具体取决于刚刚推送和接收的分支。

这是一个 example of a hook with a specific branch checkout:

#!/bin/bash

while read oldrev newrev ref
do
    branch=`echo $ref | cut -d/ -f3`
    GIT_WORK_TREE=/path/to/local/checkout git checkout -f $branch
done

一定要不要push multiple branches at the same time,否则只会签出最后一个分支。