2010-09-21 37 views
29

Khi tôi cố gắng thực hiện git commit -a, tôi nhận được một ví dụ vim tốt đẹp. Tôi gõ vào thông điệp của tôi, làm :wq, vim đóng xuống và thiết bị đầu cuối có tin nhắn,Git cam kết không thành công với Vim và GVim

Aborting commit due to empty commit message. 

Căn cứ this question Tôi chắc core.editor tôi nói "gvim" (do đó, hiện user.editor, fwiw) , nhưng tôi vẫn nhận được thông báo lỗi đó.

Có ai có ý tưởng khác không?

Chỉnh sửa 1: I am có thể cam kết bằng cách chỉ định tệp. Tin nhắn của tôi quá dài để sử dụng hợp lý tùy chọn -m.

Chỉnh sửa 2:

$ git config core.editor 
vim 
error: More than one value for the key core.editor: vim 
error: More than one value for the key core.editor: gvim 

Sửa 3: Tuy có cùng một vấn đề, ngay cả với core.editor sắp xếp. Bất kỳ ý tưởng nào khác?

$ git config core.editor 
gvim -f 

$ git commit 
Aborting commit due to empty commit message. 

Sửa 4: thông báo lỗi khác. Đây là tất cả những gì tôi thấy. Tôi loại trừ một số từ câu hỏi ban đầu của tôi bởi vì tôi đã nhận được chúng trên nhiều máy, không ai trong số đó có vấn đề bằng cách sử dụng vim/gvim với git (ngoại trừ hiện tại). Trong trường hợp được hiển thị ở đây, core.editor được đặt thành vim -f.

$ git commit 

(gvim:21655): GLib-WARNING **: g_set_prgname() called multiple times 

** (gvim:21655): CRITICAL **: gtk_form_set_static_gravity: assertion `static_gravity_supported' failed 

** (gvim:21655): CRITICAL **: gtk_form_set_static_gravity: assertion `static_gravity_supported' failed 

** (gvim:21655): CRITICAL **: gtk_form_set_static_gravity: assertion `static_gravity_supported' failed 

** (gvim:21655): CRITICAL **: gtk_form_set_static_gravity: assertion `static_gravity_supported' failed 

** (gvim:21655): CRITICAL **: gtk_form_set_static_gravity: assertion `static_gravity_supported' failed 
Aborting commit due to empty commit message. 

Khi core.editor được thiết lập để gvim -f tôi nhận được chính xác các thông báo lỗi tương tự, ngoại trừ số lượng là 21.641, không 21655. Khi tôi Google là một trong những dòng này, tôi không nhận được các trận đấu (Tôi thấy rằng khó có thể tin , nhưng có bạn đang có).

+1

Tính năng này có hoạt động với 'core.editor = vim' không? – alternative

+0

@mathepic: Không. Và nó tạo ra các vars mới, tất cả được gọi là core.editor, với các lựa chọn khác nhau. Làm cách nào để loại bỏ các tính năng bổ sung? Đó chắc chắn sẽ gây ra vấn đề. – kajaco

+0

@mathepic: Xem Chỉnh sửa 2 ở trên. – kajaco

Trả lời

4

Bạn có đặt trước các dòng trong thông báo cam kết của mình với # không? Nếu bạn đang có, Git sẽ coi đó là dòng nhận xét, bỏ qua chúng và không tìm thấy nội dung nào trong thư của bạn.

+0

Tôi không làm điều này. – kajaco

+0

Vâng, đó là trường hợp của tôi. Cảm ơn Brian! – zuba

67

Nếu bạn đang sử dụng gvim, bạn cần phải đảm bảo rằng nó vẫn ở phía trước, nếu không nó sẽ trả về quyền kiểm soát cho git trước khi bạn có cơ hội chỉnh sửa và lưu thư của mình. Chỉ định công tắc -f là một phần của cài đặt trình chỉnh sửa sẽ bật tính năng này.

gvim -f 

Bạn có nhiều giá trị được đặt cho cài đặt core.editor gây ra sự cố. Bạn chỉ cần có một cài đặt.

Hãy thử:

git config --global --unset-all core.editor 
git config --unset-all core.editor 
git config --global core.editor "gvim -f" 
+0

Tôi đã nói rằng tôi đã có thể nhập thông điệp cam kết của mình. Gvim bật lên và tôi bắt đầu gõ. Bạn có nói rằng tôi không thể tập trung vào bất kỳ cửa sổ nào khác cho đến khi tôi được thực hiện với thông điệp cam kết? – kajaco

+0

+1 Vâng, tôi nghĩ vậy. – alternative

+0

@kajaco: Bạn cũng nói rằng việc lưu tin nhắn của bạn không hoạt động, điều này sẽ được giải thích bởi hành vi tự động tách khỏi gvim của gvim. Bạn đang nói rằng sửa chữa này không làm việc cho xác định? –

5

Sử dụng gvim -f nên là giải pháp (chỉ hoạt động đối với tôi), nhưng chỉ đơn giản là thiết lập core.editor thể không nhất thiết gây ra git để sử dụng nó. Để tìm hiểu xem git là gì thực sự là sử dụng, hãy chạy git var GIT_EDITOR. Nó sẽ in gvim -f. Nếu không, hãy kiểm tra man git-var và chuyển đến phần trên biến số GIT_EDITOR để tìm hiểu điều gì có thể ghi đè cài đặt core.editor của bạn.

0

Tôi đã gặp lỗi tương tự.

Chạy :wq hoặc :q! sẽ thoát với sự cố. Tôi đã thử các trình soạn thảo khác (TextMate) và khi lưu và thoát khỏi trình soạn thảo đó, cam kết sẽ hoàn thành.

Tìm thấy rằng khi đóng tài liệu với :x cam kết sẽ đóng mà không phải chuyển sang gvim và tất cả cấu hình cần thiết ở đó.

Tóm tắt -

:x là câu trả lời của tôi.

0

Cân nhắc sử dụng plugin fugitive git cho vim.

Bạn có thể thực hiện lệnh git được sử dụng thường xuyên nhất ngay từ (g) vim.

Các vấn đề liên quan