我有两个远程存储库由我的本地git存储库管理:
我为每个遥控器都有一个post-receive挂钩:
#!/bin/sh
git --work-tree=/var/www/REMOTENAME --git-dir=/var/repo/REMOTENAME.git checkout -f
但是,当我推送非主分支时,工作树不会更新。例如,如果我有一个名为'test'的分支,我会运行:
git push stage test
我不会在遥控器的工作树上看到任何变化。
如果我跑:
git checkout master
git merge test
git push stage master
我确实看到了遥控器工作树上的更改。
我的目标是能够使用允许我在多个分支上分离开发并将非主分支推送到阶段的工作流。
非常感谢任何帮助。
答案 0 :(得分:2)
您必须在post-receive挂钩中指定要结帐的分支。 使用的默认分支是master。这就是推送非主分支时行为不同的原因。
分支可以在单独的shell命令中知道。
branch=$(git rev-parse --symbolic --abbrev-ref $1)
。 (来源Git branch in a hook)
然后,在结帐命令的末尾添加$branch
。