7

这绝对是我学习源代码控制的时候了,尤其是 git。

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

我只是不太了解本地开发然后使用 git 部署到实时站点是如何工作的。

以下是如何解决的:

  1. 在我的本地机器上设置一个尽可能靠近我的 Web 服务器的环境

  2. 创建一个 git 文件夹,我将在其中开发我的项目(或从实时服务器下载现有项目)。

  3. 当我准备好推送我的更改时,将它们提交到 git 中。

我不确定的是:

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

编辑

是的,对不起,不够详细。

我在 Coda for Mac 中完成所有编码,我有几个不同的项目在进行中,但其中大部分是在 Apache 上运行的 PHP/YII。选择的数据库是 MySQL。

PHP 即将推出。

4

5 回答 5

7

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

  • 像往常一样在本地机器上进行开发。
  • 经常将您的代码检查到 Github 或其他类似的站点
  • 由于您不需要编译您的网站,您的 Git 副本几乎可以直接使用
  • 您要么想从 APACHE 服务中排除 .git 目录,要么 在“git clone”之后删除它们

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

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

你在你的开发机器上零零碎碎地做这一切,就好像你在生产中做一样。到了该走的时候,您仍然可能真的想要测试:

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

然后,您可能会像往常一样继续工作并检查 Git。通常,您将在实现一段难看的代码的过程中,需要快速修补您的实时站点。但是您不想只是将代码破解到您的实时站点中。反而:

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

关于分支的快速说明。您可以随时返回并按日期/时间获取您签入的任何版本,但按名称查找它们更容易。此外,一旦你分支,你可以在那个分支上工作,然后再次签入。现在,您的代码线出现了分歧。您正在对昨天的热度进行更改,它不会自动应用于今天的热度。如果你想要,你必须手动合并它。合并是说“Git 客户端,请尝试自动将 Release23a/Release23b delta中的所有代码编辑应用到我最近的热点”的过程。

如您所见,您可以使用 Git 提供一些非常酷的工具。假设您一直很好并且经常签到,删除您的本地代码不是问题。

请注意,Git 具有本地提交的概念。在您同步之前,这些不会将您的工作从硬盘驱动器崩溃中拯救出来。

于 2012-09-01T09:23:18.280 回答
2
  • 如何将我的更改推送到实时服务器?

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

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

  • 如果我不小心删除了本地副本怎么办?

你在 GitHub 和你的生产服务器上还有另一个。

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

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

于 2012-09-01T09:08:43.767 回答
2

这里有几个链接有助于回答您的几个问题。

对于 git 使用: Git 工作流程

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

用于更新服务器:Fabric

于 2012-09-01T09:24:39.817 回答
1

我也是一个 Git 新手。然而,这个 Git 工作流模型在设置后似乎是独一无二且简单的:

http://joemaller.com/990/a-web-focused-git-workflow/

它可能不适合您,但是一旦您了解了 Git 的工作原理,它可能会提供一种低维护的解决方案。

于 2013-03-12T00:35:10.250 回答
0

如果您需要帮助设置本地/git/live 环境,这里是个好去处:http ://www.mybringback.com/bringers/14509/git-local-and-shared-server-development-environment-with- ssh-设置/

就数据库架构而言,您要么需要编写一些部署脚本,要么需要手动对本地和实时环境进行修改。

希望这有帮助吗?

于 2013-10-15T03:39:49.610 回答