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,否则只会签出最后一个分支。
我有一个远程裸 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,否则只会签出最后一个分支。