Подтвердить что ты не робот

GIT Rebase Fatal на нескольких двоичных файлах объемом 0,5 ГБ

[Этот вопрос по существу возобновляет git сбой во время rebase, который никогда не получал ответа]

Я пытаюсь переустановить из ветки 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?

Ошибка связана с тем, что обе ветки и их общий предок имеют три файла .dat, каждый из которых составляет 0,5 ГБ.

Как я могу выполнить переустановку в этой ситуации?

Дополнительная информация:

  • A 'git merge main' отлично работает.
  • Дополнение .gitattributes с '*.dat merge = keepTheirs' не предотвращает фатальный.
  • Файлы *.dat отличаются.
  • Я хочу удалить *.dat файлы, чтобы переустановить остальные, а затем добавить *.dat. Но как?
  • Я использую git 1.7.9.4
4b9b3361

Ответ 1

Вы не узнаете, достаточно ли ваша машина до сбоя в 'w20 > rebase', но к тому моменту ваш каталог находится в состоянии munged. Во время перезагрузки другая ветвь была проверена (основная), так что к ней могли бы применяться изменения secc. Восстановите и продолжайте:

git checkout secc

Не удалось выполнить перезагрузку, так как вы отметили, что у вас есть два варианта:

  • Если rebase не требуется, перейдите к 'git merge main'
  • Получить большую машину и повторить "git rebase main"

У вас нет практического варианта игнорировать файлы на 0,5 ГБ, выполнить перезагрузку, а затем вернуть эти файлы giga.

Ответ 2

В комментариях, которые вы сказали, что делать то же самое с компьютером, который содержит больше, в этом случае 32 ГБ, память решила проблему. Исходя из этого, я бы сделал вывод, что у вас было слишком мало памяти, чтобы сделать это на машине, с которой вы впервые ее попробовали.

Ответ 3

Попробуйте поместить их в .git/info/attributes:

# whatever gets them...
yourfile binary -delta merge=binary
*.yourext binary -delta merge=binary

которые вызовут конфликты слияния, если эти файлы изменятся, и вам придется выяснить, что с ними делать. проверьте gitattributes и rebase doc для других стратегий слияния, я даже не буду называть опасных здесь.

Я не уверен, что это реальное слияние, пытающееся запустить все это в ядре, но, похоже, стоит попробовать.