Git push - 选择:内存不足

时间:2014-11-12 16:29:06

标签: windows git github large-files

对于游戏开发项目,我们有一个包含大型二进制文件的git repo。它们的总体检查尺寸在10-70MB到700MB之间。

我使用以下软件:

  • Windows 7 64位
  • Git [git version 1.9.4.msysgit.2] + open-ssh
  • Tortoise Windows客户端64位

当我尝试将(初始推送)推送到github时,我收到以下错误(总是围绕~170MB的进度):

git.exe push -v --progress  "origin" master:master

Pushing to git@github.com:totallymorten/ue4-test.git
Counting objects: 407, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (402/402), done.
select: Not enough memory
fatal: sha1 file '<stdout>' write error: Invalid argument
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@github.com:totallymorten/ue4-test.git'


git did not exit cleanly (exit code 1) (573007 ms @ 12-11-2014 16:50:48)

有趣的是,如果我在我的linux工作站上尝试完全一样,那就可以了!

我已经尝试过使用Putty plink而不是OpenSSH的所有组合,并且我也尝试过https://替代协议。到目前为止,Windows上没有任何功能。虽然,我得到另一个错误消息https://我怀疑我可以增加POST缓冲区大小使其工作......但我真的更喜欢SSH。

我知道有各种变通办法,如子模块和git-annex,还有其他帖子,如:

  

git-clone memory allocation error

     

Repack of Git repository fails

但我发现没有什么可以帮助我解决问题。

任何评论都表示赞赏,

谢谢,

的Morten。

2 个答案:

答案 0 :(得分:0)

Git用于版本控制,因此可以使用代码或文本的小文件。

应该从您的GIT中排除静态文件,特别是大文件,因为您确实遇到了这个问题。因此,创建一个新文件夹并排除该二进制文件,您没有任何问题。

将该文件夹放在.gitignore中。

看看那个项目。如果您需要大文件的版本控制

https://git-annex.branchable.com

答案 1 :(得分:0)

好的,所以我终于开始工作了:

  • 安装CygWin 64-bit,然后使用64位版本的git(只需选择在选择组件时安装git),它可以完美运行。
  • 缺点是你不能使用像TortoiseGit这样的图形客户端。有些人已经开始工作了using a wrapper,但我很难让一切工作......所以我现在一直坚持使用命令行客户端。

**编辑**

实际上你可以直接使用sourcetree和CygWin + git 64位。只需指向sourcetree设置中的git可执行文件,如下所示:

  • git binary:c:\ cygwin64 \ bin
  • 外部dll:c:\ cygwin64 \ bin

它有效!!

我在使用TortoiseGit时遇到了一些问题,但主要是:

  • TortoiseGit将所有文件检测为&#34;已修改&#34;当你做&#34;检查修改&#34;。不知道这是否与Cygwin有关。
  • 修改文件后,我无法执行&#34;添加&#34;在TortoiseGit中操作。我可以直接用&#34;承诺掌握&#34;菜单行动虽然..