Bạn không thể pull code từ kho từ xa nếu có xung đột giữa thay đổi chưa commit trên máy cục bộ và nội dung kho từ xa. Cơ chế này bảo vệ code bạn muốn giữ.
Hướng dẫn này giải thích lỗi "Your local changes to the following files would be overwritten by merge" và cách khắc phục qua ví dụ.
Nguyên nhân lỗi
Phiên bản cục bộ thường khác kho từ xa – đây là tính năng cốt lõi của Git: sửa local mà không push ngay. Khi pull, Git lấy nội dung kho từ xa lưu vào máy cục bộ, chỉ diễn ra nếu bạn đã commit tất cả thay đổi muốn giữ.
Nếu pull mà chưa commit, và file đó cũng bị sửa trên kho từ xa, sẽ gặp lỗi này.
Ví dụ minh họa
Clone kho ck-git chứa file README.md với nội dung # ck-git. Sửa file trên GitHub thành # Career Karma Git. Trên máy local, sửa file thành # CK Git. Giờ local và remote khác nhau.
Chạy git pull báo lỗi:
error: Your local changes to the following files would be overwritten by merge: README.md Please commit your changes or stash them before you merge. Aborting
Các giải pháp
Có hai bản sao file: local và remote. Git không biết giữ bản nào. Giải pháp: stash hoặc commit code.
Cách 1: Commit
git add README.md git commit -m "docs: Update README.md"
Git giờ biết bạn muốn giữ thay đổi local.
Cách 2: Stash
git stash
Lưu thay đổi vào stash (giấu để xem sau). Giờ pull an toàn:
git pull
Xem lại code stash bằng git stash pop. Nếu muốn commit sau, vẫn làm được.
Kết luận
Lỗi xảy ra khi pull kho từ xa có nội dung xung đột với phiên bản cục bộ. Khắc phục: stash thay đổi để sau hoặc commit ngay. Bạn đã biết cách fix lỗi như chuyên gia!