2012-10-04 50 views
2

我想设置的Git这样我就可以有同时访问同一网站的不同版本网站的多个同时访问的版本。例如,“沙盒”网站,“舞台”网站和“制作”网站。远程维护使用Git

我目前在Windows上安装了Git 1.7.11,并且在我的CentOs 5.5 VPS上运行了Git。本地我有2个分支,'主'和'开发者'。远程我有2个分支,'主'和'开发者'。

我按照以下教程showing how to manage a website using Git,但现在感觉我是相当愚蠢的。我可以将文件提交到从我的本地机器到远程机器的开发分支或主分支,并且使用更新后的钩子将这些文件签出到我的Apache'htdocs'目录中。这很好,当我切换分支文件'改变'。

然而,我想有在同一时间访问,所以我可以运行一个网站,而客户端可以查看同一站点的升级版本,这两个版本。 我该怎么做?之后我打算使用Git将登台/ dev合并到master中。

这是最好的方法吗?在更新后的钩子签出?

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

您是否尝试过?这听起来很合理 –

+0

似乎工作,但我很新的这一点,不知道最好的做法是什么.. – codinghands

+0

似乎是一个非常合理的想法给我。你已经建立了你的服务器仓库,对吗? (否则,如果您正在更新在服务器上签出的分支,则您的git推送可能会失败。) –

回答

0

这可能不会帮助你关于Git的问题,但我不希望在Web开发中使用这种工作流程,当我认为某种方式需要多一点工作时,但作为交换时更加灵活可靠。

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

在这种情况下,您可以在本地推送所有需要的东西,您的Web项目目录中的工作目录只会在您决定拖动时才会更改。如果出现与项目环境相关的错误,您可以直接在远程服务器的项目目录上进行快速更改,从而可以提交修复并轻松将其恢复,这样做还有额外的好处。

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