相关疑难解决方法(0)

多个0.5GB二进制文件的GIT Rebase致命

[这个问题基本上是在rebase期间重新打开git崩溃,从来没有答案]

我正在尝试从我的'secc'分支进行改造:

$ git rebase main
First, rewinding head to replay your work on top of it...
fatal: Out of memory, malloc failed (tried to allocate 553656577 bytes)         # about 0.5 GB
$ git rebase --abort
No rebase in progress?
Run Code Online (Sandbox Code Playgroud)

失败与两个分支及其共同祖先有三个.dat文件的事实有关,每个文件都是0.5 GB.

在这种情况下我该怎么办?

附加信息:

  • 'git merge main'工作得很好.
  • 使用'*.dat merge = keepTheirs'扩充.gitattributes并不能阻止致命.
  • *.dat文件确实不同.
  • 我愿意删除*.dat文件以重新绑定其他文件,然后添加回*.dat.但是怎么样?
  • 我正在使用git 1.7.9.4

git git-rebase

12
推荐指数
1
解决办法
949
查看次数

"致命:ref HEAD不是一个象征性的参考"在交互式git rebase期间

有3个提交 - 一个正确,然后两个愚蠢的清理,错别字等.所以我想要压扁它们.消防:

git rebase -i HEAD~3
Run Code Online (Sandbox Code Playgroud)

听起来很简单,它应该可以工作 - 我在遇到问题之后尝试过它,在一个全新的回购中,它按预期工作.编辑显示3个提交,选择顶部,挤压另外两个,保存并退出,完成.如果我在详细模式下运行,我会看到更多细节 - git通过检查我选择的第一个提交进入分离的HEAD状态,然后执行'Rebasing 2/3'和'Rebasing 3/3',显然创建了一些临时提交一路走来 - 然后成功的消息; 编辑器在某些时候再次弹出,让我改变提交消息.一切都很好.

但同样的命令在工作回购中消失了!3在一个编辑器中提交,选择南瓜壁球......但是这一次,我没有看到'Rebasing 2/3',而是'HEAD现在在my-SHA-1'之后的第一行,它遇到了致命的!

HEAD is now at 48a6c3d... <commit message>
fatal: ref HEAD is not a symbolic ref
Run Code Online (Sandbox Code Playgroud)

但是,为什么 Git的期待HEAD是一个象征性的裁判?Rebase进程确实分离了HEAD - 就像我在探索性示例中看到的那样 - 那么为什么然后在第二个例子中致命,而不是在第一个例子中呢?cat .git/HEAD给我我已经选择的提交的SHA1 ......

我花了几个小时阅读和研究,但有些东西不在这里,我无法找到它是什么!我怀疑也许有些钩子是负责任的(对它们知之甚少,并且知道有问题的回购确实有一些).感谢您在回答这个问题时的考虑!

git rebase

7
推荐指数
1
解决办法
3892
查看次数

标签 统计

git ×2

git-rebase ×1

rebase ×1