首先感谢您花时间阅读这个问题。
我目前正在研究哪种 Git 工作流程最适合我工作的公司的网站开发。整个网络都有不同的指南,但它们大多是概念性的。如果我的实施方式有误,请告诉我:
1. 概念
从概念上讲,将有 4 层,开发、集成、登台和生产。开发层存储在本地,集成在 Git 的帮助下完成,生产层直接位于 public_html,在发布前预览站点的暂存层位于受保护的目录 __dev/staging (或者更好的是 __dev/[branch_name] ? )。
2. 文件夹结构(暂存和生产层)
- 混帐
- project.git(这是本网站项目的裸仓库)
- public_html
- __dev(受密码保护的目录)
- 暂存(这就像用作暂存层的 public_html 的副本)
- __dev(受密码保护的目录)
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.,还是有另一个?
谢谢你。