Git“Live Server”最佳实践

时间:2011-03-30 18:17:39

标签: git workflow live

我和我的伙伴一直在讨论推动和拉动影响普通大众可查看文件的仓库的想法,而不是将仓库存放在隐藏的位置,而只是在我们觉得它们对走。虽然能够直接推送到“现场”非常方便,但我想知道这会产生什么负面影响(如果有的话)。

非常感谢!

4 个答案:

答案 0 :(得分:4)

如果走这条路,我会建议拉而不是推。

始终拉出成品并且不要在实时服务器上进行合并,因为如果存在冲突,您将争先恐后地修复它们。在您的测试环境中进行所有合并等。一旦一切顺利,将完成的结果推送到生产分支的“裸”仓库,然后从生产机器git pull推送。

是的,这可能是另一个失败点,但我认为利弊会带来好处。

答案 1 :(得分:1)

VCS不应该是一个部署工具(参见Using git below web root in production.):一个文件的简单ftp(用git archive创建)就足够了。

如果您想使用Git,请使用服务器端的裸仓库进行推送,并使用post-receive hook更新代表您网站的工作树。

答案 2 :(得分:1)

听起来您是脚本部署的候选人。我强烈建议您查看CapistranoWebistrano。使用这些工具,您可以轻松地从公共可用的git仓库进行部署,并仅更新服务器上所需的代码。 repo的缓存副本保存在服务器上,因此您只传输更改集。我提到的这两个工具还允许您轻松回滚更改,管理数据库迁移等.Webistrano本质上是Capistrano的Web前端,这是一个红宝石的宝石。我也听过弗拉德的好话,但我对它并不熟悉。祝你好运。

答案 3 :(得分:0)

我以这种方式将本地开发“推送”到Live Server:

1.-在服务器上配置挂钩       的的.git /钩/后接收
     包括这一行:

     git pull
     git reset --hard

警告:reset --hard将删除实时工作区上的所有更改。 (见下文)

2.-授予文件的可执行权限

 chmod +x .git/hooks/post-receive

3.-允许实时服务器上的“非裸”存储库接收推送

 git config receive.denyCurrentBranch ignore

我在我的本地副本(用于开发)上工作,该副本直接从实时服务器克隆。 并按

进行部署
 git push 

为了避免冲突,我有以下惯例:   在推动之前总是拉   切勿在实际站点上工作或在服务器上提交。

我希望你觉得这个方法很有用。