使用Git远程维护多个可同时访问的网站版本

时间:2012-10-04 17:48:09

标签: git

我想设置Git,以便我可以同时访问同一网站的各种版本。例如,沙盒'网站,'分期'网站和'生产'站点。

我目前在Windows上安装了Git 1.7.11,并且在我的CentOs 5.5 VPS上运行了Git。在当地我有2个分支机构,' master'和' dev'。远程我有2个分支,' master'和' dev'。

我已经按照以下教程showing how to manage a website using Git进行了操作,但现在我觉得自己很愚蠢。我可以将文件从本地机器的dev分支或主分支提交到远程分支,然后使用更新后的钩子将这些文件检出到我的Apache' htdocs'目录。这很好用,当我切换分支时,文件会改变'。

但是,我希望同时访问这两个版本,以便我可以运行网站,而客户可以查看同一网站的暂存版本我该怎么做?之后我计划用Git将staging / dev合并到master中。

这是最好的方法吗?更新后挂钩中的结帐?

GIT_WORK_TREE=/htdocs/production git checkout master -f
GIT_WORK_TREE=/htdocs/staging git checkout dev -f

2 个答案:

答案 0 :(得分:0)

更新后挂钩中的结帐可以使用,但您可能还需要定义GIT_DIR

请参阅:

这将确保git命令知道git repo的位置。

答案 1 :(得分:0)

这可能无法帮助您解决有关Git的问题,但我不希望在Web开发中使用这种工作流程,因为在我看来,某种方式需要更多的工作,但在交换中则是更灵活可靠。

我只想标记一个裸的公共存储库,其中所有提交都通过push和fetch(就像你使用的那些有钩子),但没有任何钩子。然后我会在远程服务器上有2个项目目录:一个用于开发,一个用于主服务器;两者都使用克隆的非裸git存储库(每个都有一个.git文件夹)。因此,您的Web服务器上将有1个裸存储库(或者它可以位于任何服务器上)和2个非裸存储库。

在这种情况下,您可以在本地推送所需的所有内容,Web项目目录中的工作目录只会在您决定拉动时更改。这样可以直接在远程服务器的项目目录上进行快速更改,以防出现与项目环境相关的错误,您可以提交修复并轻松将其推回。

使用多个远程项目目录(和url),您可以在同一台服务器上同时拥有多个项目状态。

相关问题