Sự cố khi nhập tin nhắn cam kết Git với Vim


146

HĐH: Windows

Tôi viết

$ git commit

sau đó

"# Vui lòng nhập tin nhắn cam kết"

Tôi viết một số văn bản, như

"Xác thực mẫu đã thêm"

Nhấn Enter và không cam kết. Sau đó, tôi nhấn Shift + Enter, Ctrl + Enter, Alt + Enter - vẫn chưa được cam kết.

Tôi nghĩ rắc rối ngu ngốc của nó, nhưng tôi phải làm gì?


Không vấn đề gì. Nhưng câu hỏi của bạn có thể sẽ được chú ý nhiều hơn tại Super User, câu hỏi nhiều hơn về chủ đề cho loại câu hỏi không lập trình này: superuser.com/questions/tagged/git
bzlm

Câu trả lời:


232

Nếu đó là VIM cho Windows, bạn có thể làm như sau:

  • nhập tin nhắn của bạn theo hướng dẫn được trình bày
  • nhấn Escđể đảm bảo bạn thoát khỏi chế độ chèn
  • sau đó gõ :wqEnterhoặc ZZ.

Lưu ý rằng trong VIM thường có một số cách để làm một việc. Ở đây có một sự khác biệt nhỏ mặc dù. :wqEnterluôn ghi tập tin hiện tại trước khi đóng, trong khi ZZ, :xEnter, :xiEnter, :xitEnter, :exiEnter:exitEnterchỉ viết nó nếu tài liệu được sửa đổi .
Tất cả các từ đồng nghĩa này chỉ có số lần nhấn phím khác nhau.



1
Khi tôi nhập, :wqtôi thấy thông báo sau, ".git / COMMIT_EDITMSG" 54L, 2316C bằng văn bản Hủy bỏ cam kết do thông báo cam kết trống.
kanna

Hãy chắc chắn rằng bạn đã thêm một tin nhắn. Khi được nhắc gõ một cái gì đó như "tin nhắn của tôi ở đây" (bạn sẽ chuyển sang chế độ --insert-- Tôi giả sử, nhấn esc để rời khỏi nó). Khi bạn đã hoàn tất và thoát khỏi chế độ chèn, hãy nhập 'ZZ' (vốn ZZ)
Kpmurphy91

22
Tại sao, ai đã nghĩ ra điều này? : wq Enter hoặc ZZ nghe có vẻ điên rồ.
dezman

1
các ilệnh để bắt đầu chèn nội dung tin nhắn là cực kỳ hữu ích. Cảm ơn @Matt Greer vì điều đó. Câu trả lời này là tốt cho các bước còn lại.
ps2goat

47

Tôi giả sử bạn đang sử dụng msys git. Nếu bạn là, trình soạn thảo đang bật lên để viết thông điệp cam kết của bạn là vim. Vim ban đầu không thân thiện. Bạn có thể thích chuyển sang một trình soạn thảo khác. Nếu bạn muốn sử dụng một trình soạn thảo khác, hãy xem câu trả lời này: Làm cách nào để sử dụng Notepad ++ (hoặc loại khác) với msysgit?

Nếu bạn muốn sử dụng vim, hãy gõ iđể nhập tin nhắn của bạn. Khi hạnh phúc nhấn ESC. Sau đó gõ :wq, và git sau đó sẽ được hạnh phúc.

Hoặc chỉ cần gõ git commit -m "your message here"để bỏ qua trình soạn thảo hoàn toàn.


16
Vim thân thiện không? Hay mọi người chỉ quen với sự không thân thiện của nó?
Ryan Lundy

8
vim là thân thiện một khi bạn hiểu làm thế nào nó hoạt động. Nó thực sự rất logic và suy nghĩ tốt.
Matt Greer

Nếu tôi muốn sử dụng các ký tự yêu cầu thoát (ví dụ dấu nháy đơn) trong thông điệp cam kết, tôi luôn sử dụng trình soạn thảo vim vì nó ít gây phiền nhiễu hơn. Mặt khác, tôi hầu như luôn luôn viết thông điệp cam kết như là một phần của lệnh commit.
David DeMar

Điều này thật tuyệt khi bạn cần sửa đổi một thông điệp cam kết
shinzou

15

Bạn đã thử đi chưa: git commit -m "Tin nhắn ở đây"

Vì vậy, trong trường hợp của bạn:

git commit -m "Form validation added"

Sau khi bạn đã thêm các tập tin của bạn tất nhiên.


1
Biến thể của bạn tốt. Nhưng tôi muốn đi theo con đường của những gì tôi đã viết (google Translator)
aTei

Đừng lo lắng, tôi quên rằng có một biên tập viên sau lệnh đó. Tôi hiếm khi chỉ thực hiện cam kết git mà không có "Tin nhắn"
Tony

1

Thông thường, git commithiển thị trình soạn thảo tương tác (trên Linux và có thể cả Cygwin, được xác định bởi nội dung của $EDITORbiến môi trường của bạn ) để bạn chỉnh sửa thông điệp cam kết của mình. Khi bạn lưu và thoát, cam kết hoàn tất.

Bạn nên đảm bảo rằng những thay đổi bạn đang cố gắng cam kết đã được thêm vào chỉ mục Git; điều này xác định những gì được cam kết. Xem http://gitref.org/basic/ để biết chi tiết về điều này.


0

Bạn có thể thay đổi ký tự nhận xét thành thứ gì đó ngoài # như thế này:

git config --global core.commentchar "@"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.