git - 网页开发工作流程

标签 git web

绝对是我学习源代码管理的时候了,尤其是 git。

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

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

下面是它可能如何运作:

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

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

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

我不确定的是:

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

编辑

是的,抱歉,不够详细。

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

PHP 正在走向原始。

最佳答案

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

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

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

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

您在开发机器上零零碎碎地完成所有这些工作,就像在生产环境中一样。到了该走了的时候,您仍然可能真的想要测试:

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

然后,您可能会像往常一样继续工作并检查 Git。通常,您会在执行一些丑陋的代码的过程中需要快速修补您的实时站点。但是您不想只是将黑客代码放入您的实时站点。相反:

  • 检查您的 Release23a
  • 制作你的修补程序
  • 照常 checkin (它将保存到 Release23a 分支)
  • 再次标记,Release23b
  • 像以前一样部署(Release23b)
  • 将 Release23b merge 回您的主代码行

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

如您所见,Git 提供了一些非常酷的工具。删除您的本地代码不是问题,前提是您表现良好并且经常 checkin 。

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

关于git - 网页开发工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12226395/

相关文章:

git - 致命 : could not read username for 'https//github.com' device not configured

Git 子模块。 pull 入 super 项目的新克隆

fonts - 谷歌 WebFonts 渲染

javascript - 在 Ant.Design 中个性化 ReactJS 分页样式 - 有什么办法吗?

php - 根据另一个 SQL 查询的结果执行查询

bash - 如何使用特定选项限制 git 命令?

git - 如何比较github中同一分支上的两个不同提交?

linux - 创建本地 git 存储库失败

javascript - 让前端javascript访问用户私有(private)的文本文件

http - 在本地模拟远程网站进行测试