0

对于我的第一个 phalcon 项目,我决定选择 fortrabbit 托管,尽管我对 git 没有任何丰富的经验。我在一个主树中工作,它被不断地提交和推送。我有一些文件夹,里面装满了用户生成的内容(图片上传)。为了在进行新提交后不删除这些文件,我把这个文件夹放到我的 .gitignore 文件中。但是如何使用这个用户生成的内容更新我的本地存储库?git pullgit fetch不适用于这种情况。使用 git 部署到 live-stage 的正确方法是什么?

4

1 回答 1

0

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

这不是制定正确.gitignore规则的问题。网络空间上的文件可以更改:例如,当软件权限临时、日志、缓存文件或用户上传时。另一个例子是,当使用“网络安装程序”时(想想 WordPress 更新)。所有这些更改都不会反映在 Git 中——因为将此类运行时数据存储在 Git 中并不是一个好习惯,而且由于无法将这些更改同步回 Git 存储库(因此您可以将这些更改拉回) . 这是不可能的,也不是你想要的。

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

  1. 最专业的就是遵循12-factor design pattern:代码和内容是严格分开的。用户生成的内容将存储在场外。每次 Git 推送都会重新打包和重新部署代码库。应用程序的存储是短暂的,在每个(原子)部署上,完整的代码库都将被新内容替换。带有fortrabbit 的Professional Stack 就是这样设计的。

  2. 更方便——特别是对于遗留思维/设计——是像 fortrabbit 通用堆栈这样的解决方案,在部署期间,来自 Git 存储库的新文件将在网络空间中“同步”,并带有“覆盖但不删除”。网络空间是持久的,必要时可以通过 SSH/SFTP 登录以获取和下载所有文件。

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

于 2017-08-08T12:28:45.940 回答