git – 如何将我的三个网站变体(及其部署目录)作为一个存储库中的分支而不是三个不同的存储库?

我正在使用Git来部署一个在两个不同服务器上有三个不同域的网站,每个服务器代表不同的开发阶段:开发,登台和生产

我已成功使用每个Web根目录设置部署作为远程存储库,并使用post-receive挂钩在push上更新自身.

但是这有一些问题.首先,当另一个开发人员进行更改时,我想知道我只需从一个存储库中删除.我不想问他承诺的3个中的哪一个.其次,利用一些分支是很好的,这样不仅网站的每个阶段都有自己的回购,而且它也有自己的分支,所以在本地,我的每个分支,“dev”, “分期”和“现场”会推动正确的回购.

那是我的梦想.谁能想到一种完成这个工作流程的方法?我悲惨地失败了.

最佳答案
你可以这样做.在这个工作流程中,我假设一个中央服务器(origin>),您的计算机(本地>)和一些devolopers(deva>,devb>).

首先,我们为您的dev,staging和live分支创建一些本地跟踪分支,然后将它们推送到中央仓库.这只需要一次,所以开销不大.

local>git checkout -b dev
local>git push -u origin dev
local>git checkout -b staging
local>git push -u origin staging
local>git checkout -b live
local>git push -u origin live

好.

现在,您有三个分支设置为本地跟踪分支到原始对应的远程分支.现在任何开发人员都可以这样做,但他们需要的工作量更少.首先,他们需要获取更新的引用,以便我们可以引用远程分支,然后使用git checkout命令创建跟踪分支.这需要由将要为中央存储库做出贡献的所有开发人员完成(即使在这种情况下也只有一次).

devx>git fetch
devx>git checkout --track origin/dev
devx>git checkout --track origin/staging
devx>git checkout --track origin/live

所以,让我们说deva做了一些你想看的工作.我们假设他/她正在开发分支上的新功能.

deva>git checkout dev
deva> ... edit some files
deva>git commit -am "new feature bla bla"
deva>git push

你从deva那里得到一封邮件,他推动了他的改变.然后你做:

local>git checkout dev
local>git pull

好.因此,现在您和其他开发人员已经启动并运行了一个系统,因此您可以在任何开发阶段进行协作.但是,我们如何在服务器环境中启动和运行更改?

我们可以通过在git中使用钩子系统来解决这个问题.您可以让中央存储库通知每个服务器环境已将某些内容推送到它(您可以轻松地检测到已推送的分支)并相应地采取措施.通过这种方式,服务器可以自行更新,而无需您关心它.嗯,当然你需要小心你推动和不推动.但无论你有什么样的系统,这个要求都将永远存在.

希望这能帮助你实现梦想:D

转载注明原文:git – 如何将我的三个网站变体(及其部署目录)作为一个存储库中的分支而不是三个不同的存储库? - 代码日志