对于我的第一个phalcon项目,我决定选择fortrabbit托管,尽管我认为我对git没有任何丰富的经验。我在一棵主树上工作,它被不断提交和推动。我有一些文件夹,里面装满了用户生成的内容(图像上传(。为了在执行新提交后不删除此文件,我将此文件夹放入我的 .gitignore 文件中。但是,如何使用此用户生成的内容更新我的本地存储库?Git pull或git fetch不适用于此方案。使用 git 部署到实时阶段的正确方法是什么?
你的代码库是 Git 的一部分,你可以使用 Git 将其部署到网络空间。网站空间本身不在 Git 中。远程 Git 存储库将其内容同步或复制到 Web 空间。
这不是制定正确的.gitignore
规则的问题。网络空间上的文件可以更改:例如,当软件权限临时文件、日志文件、缓存文件或用户上传时。另一个例子是,当使用"Web安装程序"(想想WordPress更新(时。所有这些更改都不会反映在 Git 中 — 因为将此类运行时数据存储在 Git 中不是一个好的做法,并且无法将这些更改同步回 Git 存储库(因此您可以将这些更改拉回去(。这是不可能的,也不是你想要的。
有多种方法可以处理这种情况,最常见的两种模式是:
-
最专业的是遵循12因素设计模式:代码和内容严格分离。用户生成的内容将存储在异地。每次推送 Git 时,代码库将被重新打包和重新部署。应用程序的存储是临时的,在每个(原子(部署上,完整的代码库将替换为新内容。带有fortrabbit的专业堆栈就是这样设计的。
-
更方便- 特别是对于遗留思维/设计 - 是像fortrabbit Universal Stack这样的解决方案,在部署期间,来自Git存储库的新文件将在Web空间中"同步","覆盖但不删除"。网络空间是持久的,必要时可以通过SSH/SFTP登录以获取和下载所有文件。
请仔细询问。这个问题可能不够笼统,不足以引起堆栈溢出的兴趣。