2012-06-21 13 views
7

Kiedy naciska się ze zdalnym serwerem pojawia się błąd:Git Push: śmiertelne: Out of memory, malloc udało

Counting objects: 58, done. 
Compressing objects: 100% (35/35), done. 
fatal: Out of memory, malloc failed (tried to allocate 595059947 bytes) 
error: pack-objects died of signal 13 
error: failed to push some refs to '[email protected]:development'" 

Myślę, że problemem jest to, że przypadkowo comitted kilka bardzo dużych plików dziennika. Ale potem usunąłem je (plik logu git rm), ale błąd pozostaje. I nie pojawiają się w "statusie git". Jak mogę odzyskać z tego?

+0

See [to] (https://help.github.com/articles/remove-sensitive -dane); sekcja o oczyszczaniu danych z repozytorium i korzystaniu z garbage collectora. – Shahbaz

+2

Jeśli usunąłeś je za pomocą 'git rm' mogą być obecne w starych zatwierdzeniach. Czy masz zastrzeżenia do przepisywania historii i usuwania ich całkowicie? Czy masz na myśli przypadkowo pchnięty lub przypadkowo popełniony? –

+0

Miałem na myśli zobowiązanie, które nie zostało pchnięte (edytowałem oryginalne pytanie). Mam zastrzeżenia do przepisywania historii. Wszystko, co działa. – Rune

Odpowiedz

3

Nie mogłem stwierdzić na podstawie twojego komentarza, jeśli sprzeciwiałeś się przepisywaniu historii lub nie protestowałeś. Jeśli nie wyrażasz sprzeciwu, to polecenie usunie duże pliki z historii.

Ostrzeżenie: jest to destrukcyjne i nieodwracalne. Najpierw wykonaj kopię zapasową swojego repozytorium. Jeśli nie lubisz wyników, można po prostu przywrócić kopię zapasową:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch <file>' \ 
--prune-empty --tag-name-filter cat -- --all 

tego polecenia spowoduje usunięcie <file> z historii swojego oddziału. Uruchom go dla każdego pliku powodującego problemy.

0

Doświadczyłem tego błędu podczas pchania do git-repo hostowane na pi malinowym. Jeden z plików, które próbowałem wypchnąć, jest większy niż dostępna pamięć (pamięć + zamiana) na serwerze git.

rozwiązać ten problem przez tymczasowe tworząc nowy plik wymiany na serwerze git:

dd if=/dev/zero of=/media/store/swapfile bs=1024 count=655360

mkswap /media/store/swapfile

swapon /media/store/swapfile

sprawdzić, czy ta nowa partycja została dodana przez uruchomienie:

swapon, cat /proc/swaps lub free

(I nie wybrać, aby dodać plik wymiany do /etc/fstab, więc swapfile znikną po restarcie).

Powiązane problemy