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
Ответы
Ответ 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 для других стратегий слияния, я даже не буду называть опасных здесь.
Я не уверен, что это реальное слияние, пытающееся запустить все это в ядре, но, похоже, стоит попробовать.