Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Lỗi Git: Local changes would be overwritten by merge

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!