Có lẽ một trong những thông báo lỗi gây xấu hổ nhất khi dùng git development hub liên quan đến commit message sau khi merge bình thường. Bạn có thể thấy dòng nhắc nhập commit message giải thích tại sao merge này cần thiết, nhưng nếu bạn viết bất cứ gì đó nó không cho bạn thoát. Lý do nó gây xấu hổ là vì đây thực ra không phải thông báo lỗi.
Lời nhắc thực sự dành cho con người phải chỉnh sửa git merge, và bất kỳ văn bản bạn thêm vào chỉ đơn giản là thông báo cho developer khác có thể xem những gì bạn viết. Bạn phải thoát editor giống như khi bạn dùng nó từ terminal tiêu chuẩn.
Thoát Git Merge Yêu Cầu Commit Message
Thường bạn thấy điều này nếu đã thực hiện merge bình thường trên git như một phần của tài liệu riêng. Đôi khi bạn nhận lời nhắc này sau khối code khi merge upstream đã cập nhật vào topic branch của nó. Không tài liệu nào của git giải thích làm gì khi gặp nó vì nó thực sự không phải là lời nhắc.
Cả hai dòng thông báo này bắt đầu bằng ký hiệu #, nghĩa là chúng là comment. Vì git không biết bao nhiêu developer làm việc trên dự án, điều này được thêm để bạn có thể để lại tin nhắn cho người khác về lý do bạn merge upstream vào topic branch. Bạn cần biết bạn đang dùng editor nào để thoát nó.
Trong đa số trường hợp, bạn dùng editor vi hoặc vim. Nhấn phím Esc rồi gõ :wq và Enter để thoát. Đây là cách tương tự thoát vim trong bất kỳ dịp nào. Điều này lưu file và thoát, đưa bạn ra khỏi git ngay.
Chú ý các dấu hiệu giúp biết bạn dùng editor gì. Trong ví dụ screenshot, ký tự tilde thêm hiển thị dòng mới chưa chèn vào file là dấu hiệu rõ ràng git đưa chúng ta vào vim. Tiếp lại, nếu không biết editor, nhấn Esc và dùng lệnh :wq vì vi và vim gần như phổ biến nên thường sẽ thoát được.
Ngược lại, nếu bạn dùng nano thì chỉ cần nhấn Ctrl+X và gõ y khi hỏi có lưu thay đổi không. Ngay khi nhấn Enter, bạn sẽ thoát git và quay lại nơi trước. Bạn thường thấy dòng đầu terminal đọc "GNU nano" trong trường hợp này. Nếu không, tìm các phím tắt bàn phím ở dưới cửa sổ.
Nếu không phương pháp nào hoạt động, nhấn Ctrl+X rồi Ctrl+C để thoát. Điều này sẽ thoát git nếu bạn đang dùng editor emacs. Đây là trường hợp hiếm. Trong hầu hết trường hợp, Esc theo sau :wq sẽ hoạt động và Ctrl+X theo sau y sẽ hoạt động khi cách kia thất bại. Chỉ dùng Ctrl+X rồi Ctrl+C nếu bạn biết bạn đang dùng emacs hoặc hai phương pháp trên không hoạt động. Ctrl+C cũng hoạt động, dù không lưu, nếu bạn dùng editor JOE tại terminal git.
Khi đã thoát và quay lại prompt, gõ cat ~/.gitconfig | grep editor tại terminal để biết chắc chắn editor nào bạn bị mắc. Bạn sẽ nhận dòng như editor = vim, đó là tên editor git mặc định. Tương lai, bạn có thể dùng phương pháp tiêu chuẩn thoát editor đó nếu, sau merge git bình thường, bạn lại thấy dòng "Please enter a commit message to explain why this merge is necessary".
Bạn cũng có thể muốn chỉnh file, với trình soạn thảo bạn thường thích, và đổi editor thành cái bạn thích. Cuộn xuống chỗ đọc [core] rồi đổi dòng "editor = vim" thành cái bạn muốn. Ví dụ, bạn có thể muốn "editor = nano" nếu thích dùng nano để code.
VỀ TÁC GIẢ

Kevin Arrows
Kevin Arrows là chuyên gia công nghệ giàu kinh nghiệm và kiến thức với hơn một thập kỷ kinh nghiệm trong ngành. Anh持有 chứng chỉ Microsoft Certified Technology Specialist (MCTS) và có đam mê sâu sắc về việc cập nhật các phát triển công nghệ mới nhất. Kevin đã viết nhiều về nhiều chủ đề liên quan đến công nghệ, thể hiện chuyên môn và kiến thức trong các lĩnh vực như phát triển phần mềm, an ninh mạng và điện toán đám mây. Đóng góp của anh cho lĩnh vực công nghệ đã được công nhận và tôn trọng rộng rãi bởi đồng nghiệp, và anh được đánh giá cao về khả năng giải thích các khái niệm kỹ thuật phức tạp một cách rõ ràng và súc tích.