2010-11-12 36 views
30

Tôi đang sử dụng Git Bash và đang cố gắng tìm ra những gì đang xảy ra khi tôi nhập 'git commit -a'.git commit -a confused

Có vẻ như VIM mở ra để chỉnh sửa thông điệp cam kết của tôi nhưng làm cách nào để lưu và thực sự hoàn thành cam kết này? Tôi gõ vào trình soạn thảo và nhấn enter nhưng nó chỉ tạo ra một dòng khác.

FYI: Tôi đang sử dụng máy ảo Fusion trên mac của tôi vì vậy một số chìa khóa của tôi có thể là một chút khác nhau

+1

Điều này có thể giúp: http://stackoverflow.com/questions/7154936/ultimate-vim-tutorial – Daenyth

Trả lời

25

Chỉ cần rời khỏi VIM (lệnh chế độ ->:wq).

-a cờ hoạt động như:

git add -u 
git commit ... 

-m quy định cụ thể cờ cam kết thông báo. Thông báo đó là bắt buộc vì vậy nếu bạn không vượt qua (git commit -m "My message") trình soạn thảo văn bản mặc định sẽ được mở (bạn có thể thay đổi nó trong cấu hình git) và bạn sẽ phải viết thông báo cam kết, sau đó lưu và thoát khỏi trình chỉnh sửa.

+5

'git commit -a' không hoạt động như' git add .', nó hoạt động như 'git add -u' – knittl

+0

Tất nhiên là bạn đúng. Đã sửa. – Crozin

+2

"rồi lưu và thoát khỏi trình chỉnh sửa" LƯU Ý: Thoát trình chỉnh sửa lưu thông báo cam kết. – Pup

42

đây là một câu hỏi về VIM và không git bản thân (nếu tôi không nhầm)

VIM sử dụng nhiều chế độ, để thoát khỏi chế độ chèn nhấn ESC hoặc^C. để lưu và thoát khỏi các tập tin sử dụng ZZ, :x hoặc :wq

chỉ để được hoàn chỉnh: git commit -a đầu tiên sẽ thêm tất cả theo dõi và thay đổi nội dung file để chỉ mục và sau đó tạo ra một cam kết (sau khi xác định cam kết thông báo bên trong vim - hoặc biên tập viên của bạn lựa chọn)

+0

đúng, tôi chỉ đang cố gắng tiết kiệm một bước và hiểu cách làm việc trong vim - cảm ơn – Slee

+3

Bạn vừa sửa một giờ đau đầu cho tôi .. lol Cảm ơn.các ESC đã làm các trick;) – Bono

+0

Điều này nên được chấp nhận câu trả lời – Arel

14

Để lưu cam kết của bạn, bạn lưu và thoát tệp như bình thường trong vim.

 
:wq 

Nếu bạn thay đổi quyết định và muốn hủy bạn thoát mà không lưu.

 
:q! 

Bạn không cần phải sử dụng VIM, bạn có thể đặt trình chỉnh sửa, ví dụ như sau sẽ thay đổi trình soạn thảo git sử dụng cho người bạn.

 
git config --global core.editor textmate 
+0

cũng làm việc với 'pico' - có lẽ cũng 'nano', nhưng chưa được kiểm tra – toblerpwn

3

Như những người khác đã nói, Vim đang được mở để bạn thêm thông báo với thông tin về những thay đổi bạn đang cam kết. Có vẻ như trình soạn thảo mặc định trên hệ thống của bạn là Vim. Git được thiết lập sao cho nó sẽ bao gồm bất kỳ tin nhắn nào bạn gõ và lưu trong Vim, sau khi bạn đóng Vim bằng: wq,: x, hoặc một số lệnh khác.

Ngoài phương pháp Andrew Myers gợi ý của việc thay đổi biên tập viên được gọi bằng Git, bạn có thể bao gồm một thông điệp đơn giản trên dòng lệnh với một cái gì đó như thế này:

git commit -am 'This is my message for the commit. . . ' 

Nếu bạn làm điều đó theo cách đó Git sẽ không làm phiền bạn bằng cách mở một trình soạn thảo văn bản.

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