2017-08-06 91 views
0

对于我的第一个phalcon项目,我决定选择fortrabbit-hosting,尽管我没有使用git的强大经验。我在一棵主树上工作,这个主树不断被推动并推动着。我有一些文件夹,里面充满了用户生成的内容(图片上传)。为了在做新提交后不删除这些文件,我把这个文件夹放到我的.gitignore文件中。但我怎样才能更新我的本地存储库与这个用户生成的内容? git pullgit fetch在这种情况下不起作用。那么使用git部署到现场舞台的正确方式是什么?git clone - 用户生成内容丢失

+1

“git pull”或“git fetch”在这种情况下不起作用“......当然它没有。你让Git忽略这些内容:“我把这个文件夹放到我的'.gitignore'文件中。 (这可能是正确的选择,内容不应该用代码来跟踪,你的最终目标是什么? – Chris

+0

感谢您的快速响应:-) ...我的最终目标是使用git从live-server获取所有数据,即使我已经设置了一些文件夹gitignore。有没有办法在获取所有文件时忽略gitignore? –

+0

编号'git fetch'不能在文件上操作;它在_commits_上运行。无法使用Git“提取”未提交的数据。如果你真的需要在两台机器之间同步内容,请考虑一下;你真的可能不需要它 - 你应该单独考虑你的代码。 – Chris

回答

0

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

这不是设置正确的.gitignore规则的问题。 webspace上的文件可能会发生变化:例如,软件权限temp-,log-,cache-files或user-uploads。另一个例子是,当使用“网络安装程序”(认为WordPress更新)。所有这些更改都不会反映在Git中 - 因为将这些运行时数据存储在Git中并不是一个好习惯,并且因为没有办法将这些更改同步回Git仓库(所以您可以将这些更改重新导入) 。这不可能,也不是你想要的。

有应对这种局面多种方法,最常见的两种模式是:

  1. 最专业的是遵循12因子设计模式:代码和内容是严格分开的。用户生成的内容将被存储在场外。通过每次Git推送,代码库将被重新打包并重新部署。 Apps的存储是短暂的,在每个(原子)部署中,完整的代码库将被替换为新的内容。 Fortrabbit专业堆栈就是这样设计的。

  2. 更方便 - 尤其是对传统思维/设计 - 就像fortrabbit通用协议栈,在网络空间,其中在从Git的回购部署新的文件将被“同步”的解决方案,以“覆盖,但不删除”。 Web空间是持久的,必要时可以通过SSH/SFTP登录以获取并下载所有文件。

请仔细询问。这个问题可能不够普遍,对堆栈溢出感兴趣。

+0

感谢您的详细回复!现在我知道如何处理git和fortrabbit。 –