我正在运行一个网络服务器,允许用户将图像上传到服务器。但是,我使用 git 来管理我的源代码,并且 git push
操作会删除服务器上与我的本地 checkout 不匹配的任何内容 - 所以我丢失了图像每次我运行 git push 时!
起初我认为我可以保护上传文件夹,所以我尝试了其他帖子中建议的所有这些操作:
- 将目录添加到 .gitignore,
git rm --cached -r 上传
git update-index --assume-unchanged 上传
这些都不能解决问题 - 当我执行git push
时,远程目录总是消失。
接下来,我决定将上传的文件放在 git 工作区域之外,这样 git push
就不会删除它。然后我创建了一个从公共(public)目录到私有(private)目录的符号链接(symbolic link),以便我可以公开查看这些文件。到目前为止一切顺利...但是,每当我运行 git push 时,它都会删除符号链接(symbolic link)!
最后,我想也许我可以使用 post-receive git hook 在每次推送时创建符号链接(symbolic link),但我的网络服务器(openshift)已经在使用该钩子(Hook)来做其他事情了并且不允许我编辑它。
肯定有一种简单的方法可以做到这一点吗?!请帮忙!
最佳答案
您应该使用部署操作 Hook 创建到 OPENSHIFT_DATA_DIR 的符号链接(symbolic link),您可以在此处的 WordPress 快速入门中查看如何执行此操作的示例:https://github.com/openshift/wordpress-example/blob/master/.openshift/action_hooks/deploy
OPENSHIFT_DATA_DIR 在部署之间持续存在,但不在扩展应用程序中的 gears 之间共享。
关于git - "git push"删除未跟踪的远程文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28339940/