我希望你们在你的生活中做得很棒。我并不擅长git,但自从我开始使用它以来,我非常喜欢它。git post-receive hook似乎没有处理其他分支
我有我的客户的服务器即live.git
和beta.git
上,并通过互联网我能够设置挂钩,对以下一些教程两个储存后收到,以创建文件(工作目录/
和/beta/
目录分别)。该项目是一个Web应用程序,所以无论我何时进行更改,只需将它们推送到存储库,并且post-receive挂钩将更新工作目录中的文件。
的问题是我最近建立了一个新的分支(称为Angular
),现在如果我做
git push beta Angular
它推更新到资料库,但现在的工作目录不受影响。工作目录仍显示master
分支的更改。
这是我的后收到钩的内容:
#!/bin/sh
echo "Performing post-receive actions on beta.."
git --work-tree=/home/webapp/public_html/beta --git-dir=/home/webapp/public_html/beta.git checkout -f
我没有看到任何master
提及或任何分支机构这里,这就是为什么我不能,甚至尝试一些不同的东西在这里。
有人可以帮我理解我该如何做到这一点,以便不管哪个分支被推送,它只是根据推送的最后一个分支更新工作目录中的文件?
谢谢大家提前和你的时间。
编辑: 我的问题是:
1)为什么它处理master
分支我的默认?
2)是否有任何配置指定只有master
分支默认使用git --work-tree
命令进行处理?
3)有无论如何硬编码写入work-tree
的分支?因为我几乎总是可能只推送分支到beta.git
和另一个分支到live.git
。
我可以指定要处理哪个分支吗?如在特定分支的硬代码中一样,并使过程简单? –
当然。看看我的第一个读取'stdin'的代码片段:它检查名为'master'或'test'-plus-any-single-character的分支。但是,如果要将多个分支部署到*多个目录,*您需要小心索引,因为服务器端裸存储库仍然只有一个标准索引,并且您计划部署到*两个*(或更多)目录。 – torek