GitHub Error GH001: Large files detected - FIX
Cách khắc phục lỗi phổ biến GH001 GitHub không cho phép người dùng đẩy do tệp quá lớn
Nếu bạn tình cờ đọc được bài đăng này, có khả năng cao là bạn đang xử lý một lỗi GitHub khó chịu có thể xảy ra khi bạn cố gắng thực hiện một cam kết bao gồm một số tệp lớn.
Khi điều này xảy ra, ứng dụng khách git mà bạn sử dụng để thực hiện thao tác đẩy sẽ cung cấp cho bạn các thông báo lỗi tương tự như sau:
remote: error: File <File Path> is 120.11 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to <Project Name>
git did not exit cleanly (exit code 1)
Các lỗi như vậy thường do các nhà thiết kế web mắc phải vì chúng thường xử lý các tệp phương tiện như hình ảnh HQ, video và các lượt thích, thường có kích thước lớn hơn nhiều nếu chúng ta so sánh chúng với hầu hết các tệp mã nguồn được các nhà phát triển phần mềm sử dụng: tuy nhiên, điều này cũng có thể xảy ra thường xuyên khi sử dụng các khung web như Angular cùng với các gói mô-đun như WebPack, vì chúng có thể tạo các tệp JavaScript lớn.
Các tệp này bị GitHub từ chối vì dịch vụ đó có giới hạn cứng là 100 MB cho mỗi tệp, khiến chúng tôi có hai tùy chọn:
- Xóa các tập tin vi phạm
- Bỏ theo dõi và/hoặc loại trừ các tệp đó khỏi git (như được giải thích trong tài liệu github chính thức ).
Thật không may, khi xảy ra lỗi ở trên, điều đó có nghĩa là chúng tôi đã cam kết các tệp đó trong kho lưu trữ cục bộ của mình, nghĩa là chúng tôi không thể đơn giản "bỏ qua" chúng nữa: chúng tôi cần tìm cách xóa các tệp đó khỏi kho lưu trữ cục bộ của mình. Chính xác hơn, chúng tôi cần "quay ngược" về thời điểm trước khi thực hiện cam kết mà không làm mất các tệp đã cập nhật: nếu chúng tôi làm được điều đó, chúng tôi sẽ có thể xóa (hoặc loại trừ) các tệp vi phạm theo cách thủ công mà không làm mất công việc của chúng tôi.
Đây là một hướng dẫn đơn giản giải thích làm thế nào để làm điều đó.
- Mở một dấu nhắc lệnh và điều hướng đến thư mục gốc của dự án (thư mục lưu trữ thư mục ẩn .git)
- Thực hiện lệnh sau trên nhánh chính :
- git status
- Lưu ý xem bạn có bao nhiêu lần xác nhận trước nhánh gốc/chính bằng cách xem đầu ra của lệnh. Ví dụ: nếu lệnh nói rằng "Chi nhánh của bạn đi trước 'origin/master' 2 lần xác nhận" , số cần nhớ là 2, bạn sẽ phải đặt số này thay cho trình giữ chỗ <num> mà chúng tôi sẽ sử dụng trong lệnh sau.
- Thực hiện lệnh sau để di chuyển HEAD hiện tại của kho lưu trữ cục bộ của bạn trở lại cam kết được chỉ định, tức là đến thời điểm trước khi cam kết các tệp lớn này (đừng lo lắng, bạn sẽ không mất bất kỳ tệp cập nhật nào của mình ):
- git reset HEAD~<num>
- Sau khi làm điều đó, hãy thực hiện lại lệnh trạng thái :
- git status
- Đầu ra lệnh bây giờ sẽ nói rằng Nhánh của bạn được cập nhật với 'origin/master'.
Đó là nó! Bây giờ, cuối cùng bạn cũng có thể xóa các tệp lớn (trừ khi bạn chưa làm như vậy); sau đó, bạn sẽ có thể cam kết lại mọi thứ mà không mất công. Tín dụng cho giải pháp này được chuyển đến Shreya (xem chủ đề StackOverflow này ).

Tham gia cuộc trò chuyện