【问题标题】:"git push" deletes untracked remote files“git push”删除未跟踪的远程文件
【发布时间】:2015-02-05 09:07:21
【问题描述】:

我正在运行一个允许用户将图像上传到服务器的 Web 服务器。但是,我使用 git 来管理我的源代码,git push 操作会删除服务器上与我的本地结帐不匹配的任何内容 - 所以我每次运行 @987654322 时都会丢失图像@!

起初我以为我可以保护上传文件夹,所以我按照其他帖子中的建议尝试了所有这些事情:

  • 将目录添加到.gitignore,
  • git rm --cached -r uploads
  • git update-index --assume-unchanged uploads

这些都不能解决问题 - 当我执行 git push 时,远程目录总是消失。

接下来,我决定把上传的文件放到git的工作区之外,这样git push就不会删除了。然后我创建了一个从公共目录到私有目录的符号链接,这样我就可以公开查看这些文件。到目前为止一切顺利...但是,每当我运行 git push 时,它都会删除符号链接!

最后,我想也许我可以在每次推送时使用 post-receive git 挂钩来创建符号链接,但我的网络服务器 (openshift) 已经在使用该挂钩来做其他事情并且不允许我编辑它。

肯定有一种简单的方法可以做到这一点?!请帮忙!

【问题讨论】:

  • 推送前必须提交。
  • 是的,很明显,但是在服务器上创建的文件永远不会在我的工作目录中提交

标签: git openshift git-post-receive


【解决方案1】:

您应该使用部署操作挂钩在 OPENSHIFT_DATA_DIR 中创建符号链接,您可以在此处的 WordPress 快速入门中查看如何执行此操作的示例:https://github.com/openshift/wordpress-example/blob/master/.openshift/action_hooks/deploy

OPENSHIFT_DATA_DIR 在部署之间保持不变,但不在扩展应用程序中的齿轮之间共享。

【讨论】:

  • 啊,我只是在看 GIT 钩子,我不知道 openshift 的 ACTION HOOKS。这应该可以解决我的问题。谢谢!
【解决方案2】:

与大多数平台即服务提供商一样,OpenShift 每次您push 时都会部署一个全新版本您的应用程序。默认情况下,Git 未跟踪的任何内容都不会包含在新版本中。

你有几个选择:

  1. OpenShift 支持persistent data storage using a special directory:

    存储必须跨部署保留的文件的最佳做法是使用位于 git 存储库上一级的“数据”目录。您可以使用 $OPENSHIFT_DATA_DIR 环境变量在主机上引用它。例如:

    如果您创建一个名为“bunny”的 php 应用程序。 repo 的 php/index.php 文件被部署到:

    ~/{墨盒名称}/repo/php/index.php

    然后,数据目录被部署到

    ~/{墨盒名称}/app-root/data/

    因此,从您的 php/index.php 文件中,如果您将文件保存到“../../../data/blah.txt”,它将被放置在您的 repo 目录之外的数据目录中。

  2. 将生成/上传的资产存储在别处。

    这是 Heroku 等 PaaS 提供商所青睐的方法。 store it on something like Amazon S3 不是将用户上传和其他生成的内容存储在 PaaS 服务器上。

【讨论】:

  • 谢谢。在我的帖子中,我解释说我可以将文件存储在“git 工作区之外”。我确实使用 $OPENSHIFT_DATA_DIR。但是,我的问题是存储在那里的图像不是公开的,所以我无法在我的网站上显示它们。
【解决方案3】:

是的,您推送的 git 存储库不应是具有工作目录的存储库。它应该是一个bare 存储库,由

启动
git --bare init

如果您仍想在目标机器上工作,最好的解决方案是使用两个存储库(一个是裸的,一个不是),您推送到裸机,然后使用挂钩,拉到正常。可以在 here 找到此设置的示例。

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 2018-07-21
    • 2016-12-29
    • 2014-02-12
    • 2016-02-27
    • 2017-05-10
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多