【问题标题】:Should a Git push be uploading files/directories?Git 推送是否应该上传文件/目录?
【发布时间】:2013-08-01 00:16:16
【问题描述】:

我正在摆脱老式的 FTP 工作流程,并且无法让开发 → 登台 → 生产 Git 流程正常工作。我可以通过 ssh/git 连接到我的暂存服务器和生产服务器。

我在登台服务器上创建了一个空存储库并尝试推送我的本地开发存储库。这似乎奏效了。但是,似乎上传的唯一文件是 .git 文件夹中的一个 2+GB 的大文件。我的目录都不会上传。这是这样工作还是我做错了什么?我无法弄清楚如何获取我的本地项目并将其推送到服务器,就像我习惯在 FTP 中那样。

感谢任何帮助。

【问题讨论】:

  • 不能上传空目录。
  • 一些注意事项:a) 当您希望文件由 git 创建时(即您不在 bare 克隆上工作),您应该从该位置拉动,而不是从某处推送到该位置别的。 b) 如果您的 .git 文件夹有 2+GB 大,那么您使用 git 的方式可能不会让您满意。有这种大小的合法 git 存储库,但通常它表明有人在滥用 git,每个人都会不高兴。
  • 请注意,git 并不是一个部署工具。您可能需要考虑使用专用的部署工具而不是 git。

标签: git


【解决方案1】:

标准的 git push 实际上不会更新您要推送到的存储库的工作副本——您的更改都在那里,等待您手动更新您的工作副本。这是为了安全起见,以防您在工作副本中工作:)。确实,git pushgit fetch 的对立面,而不是 git pull 的对立面——考虑到 git fetch 也不会更新您的工作副本。

如果你想要的话,你可以设置一个钩子来更新你的工作副本。

【讨论】:

  • @mnagel - 如果我正在部署一个在本地创建的站点并想要将整个内容推送到服务器,我不明白我应该如何从中提取而不是推送到?好像先有鸡还是先有蛋?
  • 你需要在你的 post-receive(或 post-update)钩子中加入一些东西来填充你的工作副本。对于我的存储库,这涉及将其导出到其他地方然后构建它。
【解决方案2】:

看看 Codeschool 的 github 互动课程。

http://try.github.io/levels/1/challenges/1

它解释了大部分入门知识

【讨论】:

  • @mnagel - 意思是说 2+GB 包括媒体工具包/大型 PSD 和类似的东西
  • 大文件应该没有问题..上传时间会长一点。您需要添加要推送的每个文件,您可以使用git add * 添加文件。 git status 将返回当前添加的文件列表。添加文件后,您必须进行提交。只有这样您才能将更改推送到服务器
【解决方案3】:

Git 将整个提交树存储在您所看到的大型二进制 blob 文件(“包”)中。默认情况下,服务器将仅存储“裸”存储库,因此实际上不会签出文件,并且 .git 目录中只有压缩包数据。如果您想在某处保留最新提交的签出和最新版本,则必须在服务器上有一些提交后脚本。

【讨论】:

  • 使用 FTP 部署站点,然后在生产服务器上创建 git 存储库并从那时起使用 Git 进行任何更改是否常见?
猜你喜欢
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多