1

首先感谢您花时间阅读这个问题。

我目前正在研究哪种 Git 工作流程最适合我工作的公司的网站开发。整个网络都有不同的指南,但它们大多是概念性的。如果我的实施方式有误,请告诉我:

1. 概念

从概念上讲,将有 4 层,开发、集成、登台和生产。开发层存储在本地,集成在 Git 的帮助下完成,生产层直接位于 public_html,在发布前预览站点的暂存层位于受保护的目录 __dev/staging (或者更好的是 __dev/[branch_name] ? )。

2. 文件夹结构(暂存和生产层)

  • 混帐
    • project.git(这是本网站项目的裸仓库)
  • public_html
    • __dev(受密码保护的目录)
      • 暂存(这就像用作暂存层的 public_html 的副本)

3. 我的本地副本中的 Git 设置(开发和集成层)

git remote add origin ssh://path_to_project.git
git branch staging

这样我就有了两个分支来启动,master 和 staging。

当我做

git push origin master

该站点的在线版本应该可以更新,而无需通过 ssh 连接到该站点。当我这样做时

git push origin [branchname]

__dev/[branchname] 应该自动更新。

以上所有都可以通过 git hooks 完成。这种自动化而不是 ssh 连接和拉取的原因是这允许更快的开发(否则,如果它比 ftp 需要更多的努力,那么:/。你同意吗?)

4. 挂钩

这是我比较困惑的地方。

我想到的是这两种口味中的一种:

一种。克隆和复制

当我推送到该站点时,该钩子会将裸仓库克隆到一个临时目录并将其复制到 public_html 或 __dev/branch ,具体取决于我发送的分支。

湾。重置并拉动

当我推送到该站点时,该钩子将检查 public_html 或 __dev/branch 中是否已经存在 .git 目录

如果没有找到,cd 到那个目录并 git init,然后 git pull。

如果找到,则 cd 到该目录并 git reset --head 然后 git pull

使用 installatron 或 softaculous 安装应用程序

有时我喜欢从 installatron 安装 Web 应用程序,并将其用作工作基础。不幸的是,安装完成后没有自动推送到 git 的钩子,所以我必须连接到 ssh 并执行以下操作:

git add .
git commit -a -m "installed xxx app"
git push origin master

然后将其拉入我的本地存储库。

结论和问题

您如何看待我想到的工作流程?有什么地方需要改进吗?分行的安排好吗?哪种味道更好 4.a. 或 4.b.,还是有另一个?

谢谢你。

4

1 回答 1

1

4a 和 4b 都是常用的。

我更喜欢 4b,因为您可以在生产文件夹中找到您的所有回购历史。您可以在以下位置查看更多信息:

关于分支,从简单开始,并在需要时添加。
但是不要忘记,使用分布式VCS,您可以推送到中间存储库,该存储库可以通知Jenkins 等作业调度程序新的提交,以便运行一些测试。
如果这些测试通过,那么您可以推送到 prod 存储库。

于 2013-10-27T09:09:43.840 回答