是否可以将文件添加到git repo而不在本地检出?

mas*_*omi 5 git github

目标:将新文件添加到远程git存储库中,而无需在本地检查整个文件。

原因:我正在构建一个将文件添加到用户的git存储库的应用程序。其中一些存储库将是数百兆。有些人很少会碰到。我想避免占用数TB的磁盘空间来保持大型存储库不经常被检出的状态,并且我不想导致不可避免地延迟检出200Mb存储库(大量二进制文件)以便向其中添加一个新文件,然后将该文件推回原点。

我假设默认的git client无法做到这一点,但我希望有人编写了可以提交给远程仓库的东西(不在乎什么语言),而无需在本地检查整个东西。Cloud9 IDE会执行以下操作吗?

该应用程序可以通过SSH或GitHub用于oAuthed应用程序调整存储库的任何机制对用户git repo进行完全访问。

mas*_*omi 2

警告:以下答案不再适用于最新版本的 GIT

(我愿意接受有关如何使其与当前 git 版本一起工作的建议。)

事实证明,答案非常简单,并且证明了 Git 的强大之处。

  • 创建一个全新的 git 存储库。
  • 添加新文件并提交给它。
  • 告诉新的存储库远程存储库在哪里(git remote add ...)
  • 推送到远程仓库。

注意:远程存储库必须是裸存储库或将 receive.denyCurrentBranch 设置为“忽略”或“警告”

这是基于这样的假设:您添加的文件是新的,并且不会与存储库中的任何其他文件冲突。

只要您可以确定不会与任何内容发生冲突,远程存储库的现有内容并不重要。

PS 感谢所有发布潜在解决方法的人。

  • 随着最新版本的 git 的出现,情况似乎发生了变化。我在答案中注意到了这一点。谢谢你的例子。我已经创建了[您的要点的带注释的示例](https://gist.github.com/masukomi/4889766e1520ed3cbac4),不需要 github 来测试。我已经尝试了一些方法,但尚未提出可行的解决方案。当/如果我这样做的话,我会更新这张票。 (2认同)