首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web开发工作流

Web开发工作流
EN

Stack Overflow用户
提问于 2012-09-01 09:01:03
回答 5查看 4.4K关注 0票数 7

现在是我学习源代码管理,特别是git的时候了。

我做了很多web开发,大部分时间我在现场生产服务器上做了大量的开发工作。我知道这真的很糟糕。

我只是不太了解当地的开发,然后部署到一个使用git的现场。

它的工作方式如下:

  1. 在我的本地机器上设置一个尽可能接近我的web服务器的环境。
  2. 创建一个git文件夹,我将在其中开发我的项目(或从活动服务器下载现有项目)。
  3. 当我准备推进我的更改时,将它们提交到git中。

我不确定的是以下几点:

  • 如何将更改推送到实时服务器?
  • 如果我不小心删除了我的本地副本呢?
  • 我的数据库呢?如果我在本地机器上添加了新的表和数据,那么我也需要在我的实时服务器上手动进行这些更改吗?

编辑

是的,抱歉,细节不够。

我用Coda为Mac编写了所有代码,我有几个不同的项目正在进行中,但大多数项目都是在Apache上运行的PHP/YII。选择的数据库是MySQL。

PHP正在运行。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-01 09:23:18

如果您的网站不需要编译,您可以选择直接从Git存储库部署它。

  • 像往常一样,在你的本地盒子上做你的开发。
  • 经常将您的代码签入Github或其他站点。
  • 由于您不需要编译您的站点,所以您的Git副本几乎已经准备就绪。
  • 您要么希望从APACHE服务中排除.git目录,要么希望在"git克隆“之后排除移除目录。

您的数据库是另一个问题。你可能会:

  • 编写脚本对数据库进行更改,而不是在UI中进行更改
  • 在某个地方(可能在数据库中)包含一个识别当前模式的版本标记
  • 将脚本命名为数据库版本号(我还保留了相关代码修订的指示符,这是可压缩性所必需的-我会自动用Git变更集ID标记它)
  • 为了运行所有大于当前数据库修订版的脚本(但不大于当前的软件修订版)。我也写了这个过程)

在您的开发机器上,所有这些都是零碎的,就像在生产中一样。当时间到了的时候,你仍然很有可能需要测试:

  • 用一个友好的分支名称标记您的修订,比如Release23a或您选择的任何内容,这样您可以在以后找到它。
  • 将生产数据库复制到测试环境中(可能会在中途阻止升级的实时数据问题是一种痛苦)
  • 将整个包部署到测试环境中,运行MySQL脚本并执行Git导出(使用新的分支名称)

然后,您可能会像往常一样继续工作和检查Git。通常,您将处于实现一个丑陋代码的中间,并且需要对您的活动站点进行快速修补。但你不想就这么把密码破解到你的现场。相反:

  • 看看你的Release23a
  • 做你的修补程序
  • 像往常一样签入它(它将保存到Release23a分支)
  • 再标记一次,Release23b
  • 像以前一样部署(Release23b)
  • 将Release23b合并回主代码线

一个关于分支的快速记录。您总是可以返回并获得按日期/时间签入的任何版本,但是按名称查找它们会更容易。此外,一旦您分支,您可以在该分支上工作,然后再次签入。现在你的代码线有了分叉。你正在改变昨天的炎热,它并不是自动地被应用到今天的炎热中。如果你想要的话,你必须手动合并。合并是说"Git client,请尝试将Release23a/Release23b增量中的所有代码编辑自动应用到我的最新热点“的过程。

如您所见,Git提供了一些非常酷的工具。删除本地代码并不是一个问题,假设您一直做得很好,并且经常签入。

注意,Git有本地提交的概念。除非你同步,否则不会把你的工作从硬盘崩溃中拯救出来。

票数 7
EN

Stack Overflow用户

发布于 2012-09-01 09:08:43

  • 如何将更改推送到实时服务器?

我建议您要么使用GitHub托管您的存储库,要么创建您自己的私有存储库。然后,您将将一个存储库git clone到您的开发文件夹中,在生产服务器上也是如此。

您将对本地开发文件夹进行更改,准备就绪后,将它们推送到您的GitHub回购中。然后,您将进入服务器,并从GitHub回购中提取更改。

  • 如果我不小心删除了我的本地副本呢?

您已经在GitHub和您的生产服务器上获得了另一个up。

  • 我的数据库呢?如果我在本地机器上添加了新的表和数据,那么我也需要在我的实时服务器上手动进行这些更改吗?

除非您有一个脚本,可以放入git中,并且没有任何数据库复制发生,否则必须手动执行。

票数 2
EN

Stack Overflow用户

发布于 2012-09-01 09:24:39

以下是几个有助于回答你的几个问题的链接。

用于git使用:Git工作流

关于维护分支的指南:分支模型

用于更新服务器:交换矩阵

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12226395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档