0

Giải cứu màn hình "tối tăm" của Git (Nano/Vim Editor): Nguyên nhân và cách thoát nhanh gọn

image.png

Chào anh em!

Trong quá trình làm việc với Git, đặc biệt là khi thực hiện các thao tác gộp nhánh (git merge), cập nhật code (git pull) mà xảy ra xung đột hoặc cần tổng hợp lại lịch sử, thỉnh thoảng anh em sẽ đối mặt với một "cơn ác mộng" mang tên: Màn hình giao diện dòng lệnh bỗng nhiên thay đổi hoàn toàn, hiển thị một đống chữ màu trắng xám kèm theo dòng chữ .git/MERGE_MSG ở góc dưới cùng như hình ảnh bên dưới.

Nhiều anh em lập trình viên mới vào nghề (và đôi khi cả những ông thợ già lỡ tay) khi gặp màn hình này thường hoảng loạn, bấm phím lung tung vì không biết mình đang ở đâu, làm sao để thoát ra hay phải gõ gì tiếp theo.

Hôm nay, hãy cùng mổ xẻ xem đây có phải là lỗi hay không và cách xử lý nó trong một nốt nhạc nhé!

1. Thực chất đây có phải là "lỗi" không?

Câu trả lời là: KHÔNG! Đây không phải là lỗi (bug) của Git.

Thực chất, đây là giao diện của trình soạn thảo văn bản mặc định trên dòng lệnh (thường là Nano hoặc Vim). Khi bạn thực hiện lệnh git pull hoặc git merge và Git cần ghi lại thông tin commit message cho việc gộp nhánh (như dòng: Merge branch 'main' of ...), Git sẽ tự động bật trình soạn thảo này lên để cho phép bạn chỉnh sửa hoặc xác nhận thông điệp commit.

Vì bạn không chủ động cài đặt trình soạn thảo quen thuộc (như VS Code), Git đành phải đẩy bạn vào giao diện terminal nguyên bản này, khiến bạn có cảm giác như hệ thống vừa bị... khóa cứng.

2. Cách thoát khỏi màn hình này ngay lập tức

Tùy thuộc vào việc giao diện terminal đang mở bằng trình soạn thảo nào, cách cứu nguy sẽ như sau:

A. Nếu đây là trình soạn thảo VIM (Giống như trong hình ảnh minh họa)

Giao diện Vim có hai chế độ (Command mode và Insert mode), khiến nhiều anh em bấm phím chữ bị nhảy lung tung. Để thoát an toàn mà không cần lưu thay đổi (hoặc giữ nguyên mặc định của Git):

  1. Nhấn phím Esc trên bàn phím để chắc chắn bạn đã thoát khỏi chế độ nhập liệu.
  2. Gõ tiếp chuỗi ký tự sau: :wq (nếu muốn lưu thông điệp và tiếp tục merge) hoặc :q! (nếu muốn hủy bỏ toàn bộ quá trình merge và quay lại trạng thái ban đầu).
  3. Nhấn Enter. Ngay lập tức, bạn sẽ được trả lại tự do về với terminal chính!

B. Nếu đây là trình soạn thảo Nano

Nếu ở phía dưới màn hình có bảng hướng dẫn phím tắt (ví dụ ^G Get Help, ^O WriteOut, ^X Exit):

  1. Bạn chỉ cần nhấn tổ hợp phím Ctrl + X để thoát.
  2. Nếu máy hỏi có muốn lưu file không (Save modified buffer?), bạn nhấn phím Y (Yes) hoặc N (No tùy nhu cầu), sau đó nhấn Enter.

3. Bí kíp "tránh xa" màn hình này trong tương lai

Nếu bạn cảm thấy việc bị ném vào trình soạn thảo dòng lệnh Vim/Nano quá phiền phức và muốn Git tự động dùng thông điệp mặc định mà không cần hỏi han gì thêm, bạn có thể cấu hình lại hành vi của Git bằng các cách sau:

  • Khi kéo code (git pull), hãy dùng cờ --no-edit hoặc --rebase:
git pull origin main --no-edit

Lệnh này sẽ tự động gộp code và dùng luôn message mặc định, không bao giờ bật màn hình soạn thảo lên làm phiền bạn nữa.

  • Cấu hình trình soạn thảo mặc định sang VS Code: Nếu bạn thích dùng giao diện đồ họa quen thuộc hơn khi Git cần mở editor, hãy cài đặt VS Code làm trình soạn thảo mặc định cho Git:
git config --global core.editor "code --wait"

Lời kết

Những chiếc màn hình dòng lệnh tưởng chừng như "đáng sợ" thực ra chỉ là cách Git giao tiếp và xin ý kiến xác nhận từ lập trình viên. Hiểu rõ bản chất và thuộc nằm lòng vài phím tắt cơ bản (:wq hay Ctrl + X) sẽ giúp anh em tự tin xử lý mọi tình huống mà không bao giờ phải hoảng hốt khởi động lại máy tính nữa!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí