2012-06-21 33 views
7

Khi đẩy đến một máy chủ từ xa tôi nhận được lỗi:Git push: gây tử vong: Hết bộ nhớ, malloc thất bại

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'" 

Tôi nghĩ vấn đề là tôi vô tình được cam kết một số file log rất lớn. Nhưng sau đó tôi gỡ bỏ chúng (git rm logfile), nhưng lỗi vẫn còn. Và chúng không hiển thị trong "trạng thái git". Làm thế nào để tôi phục hồi từ điều này?

+0

Xem [này] (https://help.github.com/articles/remove-sensitive -dữ liệu); phần về thanh lọc dữ liệu từ repo và sử dụng bộ thu gom rác. – Shahbaz

+2

Nếu bạn xóa chúng bằng 'git rm', chúng có thể xuất hiện trong các commit cũ. Bạn có bất kỳ phản đối nào để viết lại lịch sử của mình và xóa chúng hoàn toàn không? Ngoài ra bạn có nghĩa là vô tình bị đẩy hoặc vô tình cam kết? –

+0

Tôi đã cam kết không được đẩy (đã chỉnh sửa câu hỏi gốc). Tôi có phản đối để viết lại lịch sử. Bất cứ điều gì hoạt động. – Rune

Trả lời

3

Tôi không thể nói bằng nhận xét của bạn nếu bạn đang phản đối việc viết lại lịch sử hoặc không phản đối. Nếu bạn không phản đối, lệnh này sẽ xóa các tệp lớn khỏi lịch sử của bạn.

Cảnh báo: điều này là phá hoại và không thể đảo ngược. Sao lưu kho lưu trữ của bạn trước tiên. Nếu bạn không thích kết quả, bạn chỉ có thể khôi phục lại sao lưu:

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

Đó lệnh sẽ xóa <file> từ lịch sử của chi nhánh của bạn. Chạy nó cho mỗi tập tin gây rắc rối cho bạn.

3

Lệnh sau cố định vấn đề này cho tôi:

git config --global pack.windowMemory 256m 

này ảnh hưởng đến hiệu quả của nén đồng bằng, do đó bạn có thể muốn thử một kích thước lớn hơn đầu tiên, một cái gì đó giống như 1g, tùy thuộc vào phần cứng và băng thông của bạn.

Xem thêm chi tiết ở đây: https://www.kernel.org/pub/software/scm/git/docs/git-pack-objects.html

0

tôi đã trải qua lỗi này trong khi đẩy đến một git-repo lưu trữ trên một pi mâm xôi. Một trong những tập tin tôi cố gắng đẩy lớn hơn bộ nhớ có sẵn (bộ nhớ + trao đổi) trên máy chủ git.

Giải Quyết vấn đề bằng cách tạm thời tạo ra một swapfile mới trên máy chủ git:

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

mkswap /media/store/swapfile

swapon /media/store/swapfile

Xác minh rằng một phân vùng swap mới đã được bổ sung bằng cách chạy:

swapon, cat /proc/swaps hoặc free

(Tôi không chọn thêm các swapfile để /etc/fstab, vì vậy swapfile sẽ biến mất sau khi khởi động lại.)

Các vấn đề liên quan