Cách khắc phục Lỗi Git & lsquo; 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 & rsquo;

Thông báo 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 trong cơ chế kiểm soát phiên bản Git. Lỗi này xảy ra nếu bạn đã sửa đổi tệp cũng có sửa đổi trong kho lưu trữ từ xa.

Lỗi Git: 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 trong khi mã hóa

Thông báo lỗi này tránh được NẾU không có tệp nào không được cam kết cũng có sửa đổi trong kho lưu trữ từ xa. Khi gặp thông báo này, tốt nhất bạn nên tham khảo ý kiến ​​của các thành viên khác trong nhóm và hỏi ý kiến ​​của họ. Cho dù bạn muốn hợp nhất các thay đổi cục bộ của mình hoặc giữ phiên bản hiện diện trong kho lưu trữ, tốt nhất là giữ mọi người tham gia.

Kho lưu trữ là gì? Đẩy và kéo trong Git là gì?

Kho lưu trữ là một loại lưu trữ mã được các thành viên trong nhóm liên tục sửa đổi và lấy thông qua cơ chế kiểm soát phiên bản GitHub. ' Kéo' có nghĩa là bạn đang kéo phiên bản mới nhất của kho lưu trữ vào bộ nhớ cục bộ / IDE (Môi trường phát triển tích hợp) của bạn, chẳng hạn như Pycharm, v.v.

Sau một lần Kéo, bạn thực hiện các thay đổi đối với mã hoặc thêm các tính năng khác. Sau khi hoàn tất, bạn ' Đẩy' mã vào kho lưu trữ để các thay đổi được lưu và bổ sung được thực hiện. Những người khác cũng có thể truy cập mã này.

Nếu bạn chưa quen với kiểm soát phiên bản Github, bạn nên xem qua tất cả những điều cơ bản trước. Trong bài viết này, chúng tôi giả định rằng bạn đã có kiến ​​thức cơ bản và biết tất cả thông tin chi tiết.

Làm cách nào để khắc phục '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'?

Việc giải quyết thông báo lỗi này phụ thuộc vào những gì bạn muốn làm. Bạn có thể hủy các thay đổi cục bộ của mình và kéo các thay đổi cục bộ vào kho lưu trữ hoặc bạn có thể lưu các thay đổi cục bộ của mình vào kho lưu trữ và lấy phiên bản từ kho lưu trữ. Tất cả phụ thuộc vào sở thích của bạn.

Do đó, chúng tôi khuyên bạn nên tham khảo ý kiến ​​của các thành viên trong nhóm của mình và đảm bảo rằng tất cả các bạn đều ở trên cùng một trang trước khi tiếp tục. Nếu bạn thực hiện sai hoặc đẩy phiên bản sai, nó có thể ảnh hưởng đến toàn bộ nhóm.

Phương pháp 1: Buộc kéo để ghi đè các thay đổi cục bộ

Nếu bạn không quan tâm đến những thay đổi được thực hiện cục bộ và muốn lấy mã từ kho lưu trữ, bạn có thể buộc kéo. Thao tác này sẽ ghi đè lên tất cả các thay đổi cục bộ được thực hiện trên máy tính của bạn, một bản sao trùng lặp của phiên bản trong kho lưu trữ sẽ xuất hiện.

Thực thi các lệnh sau trong IDE của bạn:

git reset - hard git pull

Điều này sẽ phá hủy ngay lập tức tất cả các thay đổi cục bộ của bạn, vì vậy hãy đảm bảo rằng bạn biết mình đang làm gì và không cần các thay đổi cục bộ của mình.

Phương pháp 2: Giữ cả hai thay đổi (cục bộ và từ repo)

Nếu bạn muốn giữ cả hai thay đổi (các thay đổi được thực hiện cục bộ và các thay đổi hiện diện trong kho lưu trữ), bạn có thể thêm và cam kết các thay đổi của mình. Khi bạn kéo, rõ ràng sẽ có xung đột hợp nhất. Tại đây, bạn có thể sử dụng các công cụ trong IDE của mình (chẳng hạn như Difftool và mergetool) để so sánh hai đoạn mã và xác định những thay đổi nào cần giữ lại và loại bỏ. Đây là con đường giữa; sẽ không có thay đổi nào bị mất cho đến khi bạn xóa chúng theo cách thủ công.

git add $ the_file_under_error git commit git pull

Khi bạn gặp xung đột hợp nhất, hãy bật các công cụ giải quyết xung đột đó và kiểm tra từng dòng một.

Phương pháp 3: Giữ cả hai thay đổi NHƯNG không cam kết

Tình huống này thỉnh thoảng xảy ra khi các nhà phát triển không sẵn sàng cam kết vì có một số mã bị hỏng một phần mà bạn đang gỡ lỗi. Tại đây, chúng tôi có thể lưu trữ các thay đổi một cách an toàn, lấy phiên bản từ kho lưu trữ và sau đó hủy mã của bạn.

git stash save --keep-index

hoặc là

git stash
git pull git stash pop

Nếu có một số xung đột sau khi bạn bật kho lưu trữ, bạn nên giải quyết chúng theo cách thông thường. Bạn cũng có thể sử dụng lệnh:

git stash áp dụng

thay vì bật lên nếu bạn chưa sẵn sàng để mất mã đã lưu trữ do xung đột.

Nếu hợp nhất có vẻ không phải là một lựa chọn khả thi cho bạn, hãy cân nhắc thực hiện rebase. Rebasing là quá trình di chuyển hoặc kết hợp một chuỗi các cam kết thành một cam kết cơ sở mới. Trong trường hợp phục hồi, hãy thay đổi mã thành:

git stash git pull --rebase origin master git stash pop

Phương pháp 4: Thực hiện thay đổi đối với các phần 'cụ thể' trong mã của bạn

Nếu bạn muốn thực hiện thay đổi đối với các phần cụ thể của mã và không muốn thay thế mọi thứ, bạn có thể cam kết mọi thứ mà bạn không muốn ghi đè và sau đó làm theo phương pháp 3. Bạn có thể sử dụng lệnh sau cho các thay đổi mà bạn muốn ghi đè từ phiên bản có trong kho lưu trữ:

git checkout path / to / file / to / revert

hoặc là

git checkout HEAD ^ path / to / file / to / revert

Ngoài ra, bạn cần đảm bảo rằng tệp không được sắp xếp qua:

git đặt lại đường dẫn HEAD / to / file / to / revert

Sau đó, tiếp tục với lệnh kéo:

git kéo

Điều này sau đó sẽ cố gắng tìm nạp phiên bản từ kho lưu trữ.