Computer >> Máy Tính >  >> Lập trình >> Lập trình

Git Các thay đổi cục bộ của bạn đối với các tệp sau sẽ bị ghi đè bởi giải pháp hợp nhất

Bạn không thể lấy mã từ kho lưu trữ từ xa nếu có bất kỳ xung đột nào giữa các thay đổi chưa cam kết mà bạn đã thực hiện trên máy cục bộ của mình và nội dung của kho lưu trữ từ xa. Điều này bảo vệ bạn khỏi việc ghi đè lên mã bạn muốn giữ lại.

Trong hướng dẫn này, chúng tôi thảo luận về lỗi “Các thay đổi cục bộ của bạn đối với các tệp sau sẽ bị ghi đè bởi hợp nhất” và lý do tại sao lỗi lại xuất hiện. Chúng tôi cũng sẽ xem qua một ví dụ để bạn có thể tìm hiểu cách giải quyết lỗi này.

Các thay đổi cục bộ của bạn đối với các tệp sau sẽ bị ghi đè bằng cách hợp nhất

Phiên bản cục bộ của kho lưu trữ thường sẽ khác với phiên bản của kho lưu trữ từ xa. Đây là một tính năng cốt lõi của Git:bạn có thể thực hiện các thay đổi cục bộ mà không cần đẩy chúng vào kho lưu trữ từ xa cho đến khi bạn sẵn sàng.

Khi bạn kéo mã từ một kho lưu trữ từ xa, Git sẽ truy xuất nội dung của kho lưu trữ đó và lưu chúng vào máy cục bộ của bạn. Điều này chỉ có thể xảy ra nếu bạn đã thực hiện tất cả các thay đổi đối với các tệp mà bạn muốn lưu.

Nếu bạn cố gắng kéo mã mà không thực hiện các thay đổi đầu tiên, bạn có thể thấy lỗi “Các thay đổi cục bộ của bạn đối với các tệp sau sẽ bị ghi đè bởi hợp nhất”. Điều này sẽ chỉ xảy ra nếu bạn đã sửa đổi một tệp cũng đã được thay đổi trong phiên bản từ xa của kho lưu trữ.

Một tình huống mẫu

Chúng ta hãy sửa đổi kho lưu trữ Git có tên là ck-git. Trước tiên, hãy sao chép một bản sao của kho lưu trữ này:

 git clone https://github.com/career-karma-tutorials/ck-git 

Bây giờ chúng tôi có một bản sao của kho lưu trữ trên máy cục bộ của chúng tôi. Kho lưu trữ này chứa một tệp:README.md. Nội dung của nó là:

 # ck-git 

Chúng tôi sẽ truy cập GitHub và sửa đổi tệp này trên máy chủ. Tệp của chúng tôi hiện có nội dung:

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

 # Career Karma Git 

Phiên bản cục bộ của kho lưu trữ hiện khác với nhánh chính gốc trên phiên bản từ xa của kho lưu trữ.

Phiên bản của chúng tôi chứa mã có trong kho lưu trữ từ xa khi chúng tôi lấy mã. Kho lưu trữ từ xa chứa thay đổi mà chúng tôi đã thực hiện đối với README.md.

Bây giờ, giả sử chúng tôi thay đổi README.md trên máy cục bộ của mình:

 # CK Git 

Chúng tôi đã thay đổi tệp của mình. Bây giờ, hãy thử kéo những thay đổi chúng tôi đã thực hiện vào kho lưu trữ từ xa của mình để chúng tôi có thể lưu chúng vào máy cục bộ của mình:

 git pull 

Lệnh này trả về một lỗi:

 ... Đang cập nhật a30b784..ec281fcerror:Các thay đổi cục bộ của bạn đối với các tệp sau sẽ bị ghi đè bằng cách hợp nhất:README.md Vui lòng cam kết các thay đổi của bạn hoặc lưu trữ chúng trước khi bạn hợp nhất. 

Chúng tôi đã rút ngắn phản hồi của lệnh này cho ngắn gọn. Thông điệp mà chúng ta nên tập trung vào là “Các thay đổi cục bộ của bạn đối với các tệp sau đây sẽ bị ghi đè khi hợp nhất”.

Giải pháp

Hiện có hai bản sao của tệp của chúng tôi:một trên máy cục bộ của chúng tôi và một trong kho lưu trữ từ xa của chúng tôi. Khi chúng tôi lấy mã từ kho lưu trữ từ xa của mình, Git không chắc phiên bản nào của tệp sẽ còn lại.

Để giải quyết lỗi này, chúng tôi có thể lưu trữ mã của chúng tôi hoặc cam kết mã của chúng tôi.

Để cam kết mã của chúng tôi, chúng tôi có thể thêm tệp README.md của mình vào một cam kết và tạo một cam kết chứa tệp đó:

 git thêm README.mdgit cam kết -m "docs:Cập nhật README.md" 

Điều này sẽ thêm các thay đổi chúng tôi đã thực hiện đối với README.md trên máy cục bộ của chúng tôi vào lịch sử cam kết của dự án của chúng tôi. Git bây giờ sẽ biết rằng chúng tôi muốn giữ những thay đổi này.

Giải pháp thứ hai là lưu trữ các thay đổi của chúng tôi. Điều này cho phép chúng tôi lưu các thay đổi của mình để xem sau. Chúng ta có thể lưu trữ mã của mình bằng lệnh git stash:

 git stash 

Lệnh này lưu thay đổi của chúng tôi thành kho lưu trữ (mã của chúng tôi được "lưu trữ" để sử dụng sau này). Bây giờ chúng tôi đã lưu trữ mã của mình, chúng tôi có thể lấy mã một cách an toàn từ kho lưu trữ từ xa của mình:

 git stash pop 

Bạn có thể xem mã trong kho lưu trữ Git bằng cách chạy lệnh git stash pop. Điều này sẽ cho chúng tôi thấy những thay đổi mà chúng tôi đã thực hiện đối với tệp của mình mà chúng tôi không cam kết đối với hệ thống lưu trữ của mình. Điều này có nghĩa là nếu chúng tôi quyết định muốn thực hiện các thay đổi đối với tệp sau này, chúng tôi có thể làm như vậy.

Kết luận

Lỗi “Các thay đổi cục bộ của bạn đối với các tệp sau sẽ bị ghi đè khi hợp nhất” xảy ra khi bạn cố gắng kéo một kho lưu trữ từ xa vào máy cục bộ của mình có nội dung xung đột với nội dung của phiên bản cục bộ của kho lưu trữ.

Để khắc phục lỗi này, hãy cất giữ các thay đổi của bạn để sử dụng sau hoặc thực hiện các thay đổi của bạn. Bây giờ bạn có kiến ​​thức cần thiết để khắc phục lỗi này như một chuyên gia!