Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Lỗi Windows

Cách khắc phục lỗi Git: You need to resolve your current index first

Lỗi «You need to resolve your current index first» xảy ra trong Git và có nghĩa là có xung đột merge (hợp nhất) và trừ khi bạn giải quyết xung đột, bạn sẽ không được phép checkout sang nhánh khác. Thông báo lỗi này cũng biểu thị rằng một merge đã thất bại hoặc có xung đột với các tệp.

Cách khắc phục lỗi Git: You need to resolve your current index first

Tất cả các tệp, merge và xung đột này là gì? Các thuật ngữ này sẽ lạ lẫm với bạn nếu bạn là người mới bắt đầu sử dụng Git. Git là một nền tảng kiểm soát phiên bản cho phép nhiều người làm việc trên các tệp cùng lúc và đẩy bản sao cục bộ của mã lên bản được lưu trữ trong đám mây. Theo cách này, nếu bạn thay đổi một số mã đã tải xuống (đã được đẩy) và đẩy nó lại lên đám mây, các thay đổi sẽ bị ghi đè trong đám mây bởi bản sao cục bộ của bạn.

Git có khái niệm nhánh (branch). Có một nhánh master (chính) và một số nhánh khác phân nhánh từ nó. Lỗi này đặc biệt xảy ra nếu bạn đang chuyển từ nhánh này sang nhánh khác (sử dụng checkout) và có xung đột trong các tệp của nhánh hiện tại. Nếu chúng không được giải quyết, bạn sẽ không thể chuyển nhánh.

Nguyên nhân gây ra lỗi Git: You need to resolve your current index first?

Như đã đề cập trước đó, các nguyên nhân cho lỗi này khá hạn chế. Bạn sẽ gặp lỗi này vì:

  • Một merge thất bại và bạn cần giải quyết xung đột merge trước khi tiếp tục các tác vụ khác.
  • Có xung đột trong các tệp tại nhánh hiện tại (hoặc nhánh đích) và do các xung đột này, bạn sẽ không thể checkout khỏi một nhánh hoặc đẩy mã.

Trước khi bạn tiến hành giải pháp, hãy đảm bảo bạn có kiểm soát phiên bản phù hợp và khôn ngoan là ngăn chặn các thành viên khác trong nhóm thay đổi mã trước khi bạn giải quyết xung đột.

Giải pháp 1: Giải quyết Xung đột Merge

Nếu merge của bạn không được Git tự động giải quyết, nó để chỉ mục (index) và cây làm việc (working tree) ở một trạng thái đặc biệt giúp cung cấp cho bạn tất cả thông tin bạn cần để giải quyết merge. Các tệp có xung đột sẽ được đánh dấu đặc biệt trong chỉ mục và cho đến khi bạn giải quyết vấn đề và cập nhật chỉ mục, bạn sẽ tiếp tục nhận thông báo lỗi này.

  1. Giải quyết tất cả xung đột. Kiểm tra các tệp có xung đột vì chúng sẽ được đánh dấu bởi chỉ mục và thực hiện thay đổi trong chúng cho phù hợp.
  2. Sau khi bạn đã giải quyết tất cả xung đột hiện có, add tệp và sau đó commit.

Một ví dụ là:

$ git add file.txt $ git commit

Bạn có thể thêm nhận xét cá nhân khi commit. Ví dụ:

$ git commit –m "This is Appuals Git repository"
  1. Sau khi bạn đã giải quyết xung đột, thử checkout khỏi nhánh hiện tại của bạn và xem vấn đề có được khắc phục không.

Giải pháp 2: Hoàn tác Merge của bạn

Có rất nhiều trường hợp bạn merge các nhánh và làm bết bát. Vì tất cả xung đột và sự nhầm lẫn, dự án bây giờ đang rối ren và các thành viên trong nhóm đang đổ lỗi cho bạn. Trong trường hợp này, bạn phải hoàn tác commit trước đó (merge commit). Điều này sẽ hoàn tác hoàn toàn merge và đưa toàn bộ dự án về trạng thái khi bạn chưa làm bất kỳ merge nào. Điều này có thể là cứu cánh nếu bạn đã làm rối mọi thứ vượt quá khả năng sửa chữa.

Để hoàn tác merge, nhập lệnh sau:

$ git reset --merge

Lệnh trên sẽ đặt lại chỉ mục (index) và cập nhật các tệp trong cây làm việc (working tree) khác nhau giữa «commit» và «head». Tuy nhiên, nó sẽ giữ lại những tệp khác nhau giữa chỉ mục và cây làm việc.

Bạn cũng có thể thử hoàn tác HEAD bằng cách sử dụng lệnh sau:

$ git revert HEAD

Nếu bạn muốn chỉ định chính xác commit merge bạn muốn hoàn tác, bạn có thể sử dụng cùng lệnh revert nhưng chỉ định tham số bổ sung. Hash SHA1 của commit merge sẽ được sử dụng. -m theo sau là 1 chỉ ra rằng chúng ta muốn giữ phía cha của merge (nhánh chúng ta đang merge vào). Kết quả của việc revert này là Git sẽ tạo một commit mới hoàn tác các thay đổi từ merge.

$ git revert -m 1 dd8d6f587fa24327d5f5afd6fa8c3e604189c8d4>