对于游戏开发项目,我们有一个包含大型二进制文件的 git 存储库。结账总大小在 10-70MB 到 ~700MB 之间。
我正在使用以下软件:
当我尝试推送(初始推送)到 github 时,出现以下错误(进度始终约为 170MB):
git.exe push -v --progress "origin" master:master
Pushing to [email protected]: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 '[email protected]: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 是为版本控制而设计的,例如包含代码或文本的小文件。
静态文件,特别是大文件应该从你的 GIT 中排除,因为这正是你所遇到的问题。因此,创建一个新文件夹并排除该二进制文件,就没有问题了。
将该文件夹放入您的 .gitignore 中。
看看那个项目。如果您需要对大文件进行版本控制
好吧,我终于开始工作了:
** 编辑 **
实际上您可以直接通过 CygWin + git 64 位使用 sourcetree。只需指向源树设置中的 git 可执行文件,如下所示: