git 克隆 - 缺少用户生成的内容

git clone - user generated content missing

对于我的第一个 phalcon 项目,我决定选择 fortrabbit-hosting,尽管我对 git 没有任何丰富的经验。我在一棵 master-tree 上工作,它被不断地提交和推动。我有一些文件夹,里面装满了用户生成的内容(图像上传)。为了在执行新提交后不删除此文件,我将此文件夹放入我的 .gitignore 文件中。但是我怎样才能用这个用户生成的内容更新我的本地存储库呢? git pullgit fetch 不适用于这种情况。使用 git 部署到现场阶段的正确方法是什么?

您的代码库是 Git 的一部分,您可以使用 Git 将其部署到网站空间。网站空间本身不在 Git 中。远程 Git 存储库将其内容同步或复制到网站空间。

这不是设置正确 .gitignore 规则的问题。网络空间上的文件可以更改:例如,当软件权限为临时文件、日志文件、缓存文件或用户上传文件时。另一个例子是,当使用 "web-installer" 时(想想 WordPress 更新)。所有这些更改都不会反映在 Git 中——因为将此类运行时数据存储在 Git 中并不是一个好的做法,而且没有办法将这些更改同步回 Git ] 回购(这样你就可以拉回这些变化)。不可能,也不是你想要的。

有多种方法可以处理这种情况,两种最常见的模式是:

  1. 最专业就是遵循12要素设计模式:代码和内容严格分开。用户生成的内容将存储在异地。每次 Git 推送,代码库将被重新打包和重新部署。应用程序的存储是短暂的,在每次(原子)部署时,完整的代码库将被新内容替换。 fortrabbit 的 Professional Stack 就是这样设计的。

  2. 更方便 — 特别是对于遗留 thinking/design — 是一种类似于 fortrabbit Universal Stack 的解决方案,在部署期间来自 Git 回购将在网站空间中 "synced","overwrite but do not delete"。该网站空间是永久性的,必要时可以通过 SSH/SFTP 登录以获取和下载所有文件。

请慎重询问。这个问题可能不够笼统,不足以引起 Stack Overflow 的兴趣。