Tôi đang sử dụng msysgit 1.7.7.1 trên Windows. Tôi gặp lỗi khi sử dụng git diff
. Điều gì gây ra điều này? Không có công cụ khác biệt nào được bao gồm trong msysgit? Tôi nên làm gì?
CẢNH BÁO: thiết bị đầu cuối không hoạt động đầy đủ
Tôi đang sử dụng msysgit 1.7.7.1 trên Windows. Tôi gặp lỗi khi sử dụng git diff
. Điều gì gây ra điều này? Không có công cụ khác biệt nào được bao gồm trong msysgit? Tôi nên làm gì?
CẢNH BÁO: thiết bị đầu cuối không hoạt động đầy đủ
Câu trả lời:
Đối với Git Bash, điều này có thể được khắc phục bằng cách thêm dòng sau vào ~ / .bashrc:
export TERM=cygwin
-hoặc là-
export TERM=msys
Hình thức đầu tiên dường như là bản gốc của git cho windows, hình thức thứ hai cũng là một hình thức phổ biến được biết đến để "chữa lành".
Sự cố có thể được gây ra nếu một số chương trình khác (như Strawberry Perl chẳng hạn ) đặt các TERM
biến môi trường hệ thống.
setx TERM msys
. SETX
(trái ngược với chỉ SET) ghi biến env vào sổ đăng ký.
Ví dụ: nếu bạn đang gặp sự cố trong cmd.exe, hãy xem cảnh báo tại đây:
Sau đó, chỉ cần đặt các biến môi trường của bạn và bao gồm TERM = msys. Sau đó, mỗi lần bạn mở cmd.exe, biến của bạn sẽ được đặt chính xác.
BÂY GIỜ BẠN PHẢI KHỞI ĐỘNG VỎ CỦA BẠN (CMD.EXE). Chỉ cần chạy một cái mới. Và từ đó, bạn sẽ không có vấn đề gì nữa. Lần nữa:
Các câu trả lời trên không hoàn toàn phù hợp với tôi, vì vậy tôi đã làm:
export TERM=msys
thành " [githome] / etc / profile " ở trên cùng nhưng nó chỉ thực hiện các thay đổi đối với git bash. Sau đó, tôi đã thêm
@set TERM=msys
thành " [githome] /cmd/git.cmd " sau @setlocal (Tôi chỉ cài đặt git chạy từ dòng lệnh). Có thể quyết định này không thực sự tốt nhưng nó phù hợp với tôi và không có bất kỳ cảnh báo đầu cuối nào. (Tôi sử dụng git phiên bản 1.7.10.msysgit.1).
Câu trả lời có thể được tìm thấy ở đây , trong đó tác giả của giải pháp tuyên bố rằng:
biến môi trường
TERM
đã được đặt thànhdumb
đó là thay vì
TERM=cygwin
Bạn có thể thay đổi điều đó thành
TERM=msys
để giải quyết vấn đề trong tầm tay.
Tôi làm việc trong powershell và tôi có tệp thực thi git trực tiếp trong đường dẫn của mình.
Không có câu trả lời được đề xuất nào hoạt động, nhưng tôi đã tìm thấy một giải pháp phù hợp với mình.
Tôi đã thêm một dòng trong hồ sơ quyền hạn của mình:
$env:TERM="msys"
Đã khắc phục sự cố cho tôi.
Một giải pháp nhanh chóng và bẩn thỉu trong trường hợp của tôi hóa ra là sử dụng --no-pager
tùy chọn.
Theo mặc định, một số lệnh git (như log
) sẽ sử dụng một máy nhắn tin như less
thể chúng mong đợi kết quả đầu ra dài. Máy nhắn tin yêu cầu những thứ như cuộn văn bản lên và xuống bằng các phím mũi tên, điều này đôi khi không hoạt động nếu giả định về loại thiết bị đầu cuối bạn đang sử dụng là sai (đây là nghĩa của từ "không đầy đủ chức năng").
Nếu bạn biết trước rằng đầu ra của bạn sẽ bị thiếu hoặc bạn chỉ muốn nó kết xuất đầu ra cho thiết bị đầu cuối và để cuộn lên chương trình đầu cuối của mình, bạn có thể ghi đè điều này và không sử dụng máy nhắn tin, ví dụ:
git --no-pager log
Trong trường hợp ai đó nhận được bash khởi chạy này từ Tiện ích mở rộng Git, hãy kiểm tra cài đặt cho Path to linux tools...
. Của tôi đã được đặt thành C:\cygwin
. Thay đổi nó để C:\Program Files (x86)\Git\bin\
sửa nó cho tôi. Tôi không phải đặt biến TERM để khởi chạy bash theo cách này.