2010-10-13 34 views
40

Tôi đã có Git cho Windows setup (msysgit) và nó hoạt động tốt trong vài ngày qua và hôm nay tôi đã gặp lỗi lạ.Git Windows Command Prompt bị kẹt trong các lệnh Git với (END)

Khi phát lệnh Git trong dấu nhắc lệnh Windows hoặc trong Git Bash đi kèm với msysgit, tôi nhận được một dòng '(END)' lạ xuất hiện và sau đó tôi không thể phát hành bất kỳ comamnd nào khác.

alt text

Tại thời điểm này tất cả tôi nhận được tiếng bíp hệ thống.

Bất kỳ ý tưởng nào?

Cảm ơn, P.

Trả lời

68

Git muốn hiển thị nhiều hơn một màn hình thông tin cho bạn, làm như vậy nó gọi là tiêu chuẩn unix chương trình pager less. Chỉ cần nhập q để quay lại lời nhắc khi bạn không muốn điều hướng trong đầu ra nữa.

  • j di chuyển một dòng xuống
  • k di chuyển một dòng lên
  • <gian> di chuyển một trang xuống
  • b di chuyển một trang lên
  • h hiển thị trợ giúp

Nếu bạn muốn sử dụng git một cách hiệu quả, bạn nên tìm hiểu các công cụ unix cơ bản. Thậm chí nếu git build và chạy trên windows thì nó vẫn là một phần mềm ngoài hành tinh trên nền tảng này.

Nếu bạn không muốn less chỉ cần thay thế bằng một máy nhắn tin khác trong cấu hình. Nếu bạn không muốn có một máy nhắn tin ở tất cả chỉ cần sử dụng cat:

git config --global --add core.pager cat 
+0

Cảm ơn thông tin bổ sung. – paperclip

+3

+1 Để hoán đổi 'less' với' cat'. Không phải là tôi muốn làm điều đó! – Skilldrick

+0

Bạn cũng có thể sử dụng 'more' thay cho' less'. – dave1010

11

Nhấn q để thoát khỏi pager (đó là less trong git theo mặc định).

+0

Có thể ngăn git làm việc này không? – paperclip

+2

@paperclip Tại sao bạn muốn? Rất sớm, bạn sẽ cần phải trang thông qua các kết quả - nó chỉ là bây giờ khi bạn đang bắt đầu mà bạn chỉ nhận được một trang. Chỉ cần sử dụng để nhấn 'q'. – Skilldrick

+0

Cảm ơn mẹo. – paperclip

9

Tôi lần đầu tiên xem qua câu hỏi này khi tôi đang tìm kiếm điều tương tự; không phải thoát ra khỏi lệnh log. Tôi đã tìm thấy câu trả lời tôi thích, vì vậy mặc dù nó là tốt sau khi yêu cầu ban đầu tôi sẽ thêm câu trả lời này để cung cấp một giải pháp bổ sung mà tôi đã không tìm thấy một cách nhanh chóng trong tìm kiếm của riêng tôi.

Những người khác đã nêu lý do tại sao có (END) - kết quả đang được chuyển qua một máy nhắn tin, một kết quả có thể được định cấu hình cho một máy nhắn tin khác.

Tuy nhiên, đôi khi tôi không muốn dừng lại; bởi vì tôi đã chỉ định các tùy chọn khác làm hạn chế. Tôi thấy rằng đối với điều này git has a global option--no-pager để tắt bất kỳ máy nhắn tin nào được xác định trong tệp cấu hình.

tùy chọn toàn cầu này nằm ở git lệnh riêng của mình, có sẵn cho tất cả các lệnh con và được đặt trước subcommand như thế này:

git --no-pager log 
+0

Một lưu ý hữu ích. Cảm ơn. – paperclip

1

Git đang sử dụng "pager" gọi less, cho phép bạn di chuyển thông qua số lượng lớn chương trình đầu ra dễ dàng. Tuy nhiên, các thiết lập mặc định trên Git cho Windows có vẻ là giữ cho máy nhắn tin chạy ngay cả khi có ít hơn một màn hình đầu ra.

Đây là thiết lập mặc định tôi đã có trước, mà sẽ luôn hiển thị (END) và chờ đợi cho bạn để đạt q trước khi trở về bạn nhắc nhở của bạn:

$ git config --get core.pager 
less -+F 

Bạn có thể thay đổi hành vi để less sẽ chỉ tiếp tục chạy (và nắm quyền kiểm soát bàn phím) khi có nhiều màn hình đầu ra bằng cách thay đổi tùy chọn thành -F thay vì -+F.

Vá pager pesky với

$ git config --global core.pager "less -F" 

(Cú pháp -+X lựa chọn cho ít được ghi chép lại để thiết lập lại các tùy chọn -X để "mặc định" của nó, mặc dù đó không phải là hành vi của tôi quan sát với -+F kể từ khi loại bỏ tùy chọn hoàn toàn tương đương với -F, không phải -+F.)

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