git - "git push"删除未跟踪的远程文件

标签 git openshift git-post-receive

我正在运行一个网络服务器,允许用户将图像上传到服务器。但是,我使用 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/

相关文章:

git - 使用名称中的破折号删除 git 上的远程分支

ssl - 指向 CNAME 到 openshift 抛出证书问题

kubernetes - OpenShift::POD 未从部署配置继承 "name label"

Openshift 中的 PostgreSQL 不会执行入口点并且无法启动数据库

github - 如何为私有(private)服务器重新创建Github post-receive?

git - yarn install 在 git post-receive hook 中克隆 github 包时失败

Git 更改未显示在 VS2013 更新 2 中

git - 删除不再在远程存储库中的本地 git 标签

git - 在 git push 上硬重置

git - 如何在 Git 中获取 merge 提交的父项?