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

时间:2015-06-04 09:34:23

标签: git githooks

我创建了一个远程裸git存储库:

@server:~$ nano hooks/post-receive

使用post-receive hook:

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

钩子脚本是:

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

它有权执行:

if

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

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

1 个答案:

答案 0 :(得分:0)

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

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

这是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,否则只会检出最后一个分支。