Mengapa git diff di Windows memperingatkan bahwa "terminal tidak berfungsi sepenuhnya"?
111
Saya menggunakan msysgit 1.7.7.1 di Windows. Saya mendapatkan kesalahan saat menggunakan git diff. Apa penyebabnya? Apakah tidak ada alat diff yang disertakan dalam msysgit? Apa yang harus saya lakukan?
Ok, msysgit menggunakan git, itu seperti namanya. Jadi saya mengikutinya dengan istilah msys dan itu berhasil! Posting penjelasan dalam jawaban yang diformat dengan baik sehingga saya dapat memberi Anda perwakilan!
Portaljacker
di PowerShell run: $ env: Term = "xterm"
Anton Soradoi
Jawaban:
62
Untuk Git Bash, ini bisa diperbaiki dengan menambahkan baris berikut ke ~ / .bashrc:
export TERM=cygwin
-atau-
export TERM=msys
Yang pertama tampaknya asli oleh git untuk windows, yang kedua adalah bentuk yang dikenal populer untuk "menyembuhkan" juga.
Masalah dapat disebabkan jika beberapa program lain (seperti misalnya Strawberry Perl ) menetapkan TERMvariabel lingkungan sistem.
Ya, tetapi tidak ada file seperti itu di pohon file untuk git. Jawaban lainnya berhasil dan masuk akal.
Portaljacker
1
@Portaljacker - Apa maksud Anda bekerja? Tutup git bash, buka lagi dan lihat apakah masih berfungsi?
manojlds
4
Ya, di jendela pengaturan variabel lingkungan melalui set atau GUI (pengaturan lanjutan seperti yang ditunjukkan pada jawaban lain) adalah cara yang harus dilakukan.
cgp
11
Jawaban ini kurang memuaskan karena OP tidak mengatakan dia menggunakan bash dan tidak ada persyaratan bahwa git harus dijalankan dari bash. Secara pribadi saya menggunakan Windows Command Prompt dan saya menginginkan solusi yang berfungsi untuk lingkungan itu.
David Grayson
7
@DavidGrayson Thread necro, saya tahu, tetapi Anda dapat melakukan hal yang sama di Command Prompt Windows dengan menggunakan setx TERM msys. SETX(bukan hanya SET) menulis variabel env ke registri.
rossipedia
184
Jika Anda mengalami masalah dalam cmd.exe, misalnya, lihat peringatan di sini:
Kemudian atur variabel lingkungan Anda dan sertakan TERM = msys. Setelah itu, setiap kali Anda membuka cmd.exe, variabel Anda akan disetel dengan benar.
SEKARANG ANDA HARUS MEMULAI ULANG SHELL (CMD.EXE). Jalankan saja yang baru. Dan dari sana, Anda seharusnya tidak memiliki masalah lagi. Lagi:
Ya, ini pasti. Saya dalam vista, dan itu benar-benar menyelesaikannya. Terima kasih teleball!
J Cole Morrison
2
Adakah ide dari mana masalah ini berasal atau apa arti pesan ini ?
Anthony Mastrean
7
@AnthonyMastrean itu berarti terminal tidak mendukung penulisan ke lokasi berbeda di jendela terminal. Git diff ingin menulis di seluruh jendela, misalnya untuk menulis layar berikutnya, tanpa melakukan jutaan spasi mundur untuk menempatkan kursor di tempat yang tepat setiap saat.
jwg
Karena program tidak berubah, masalah sebenarnya bukanlah dukungan terminal, itu adalah git (tepatnya kurang) telah dibodohi oleh program lain yang mendefinisikan variabel TERM sebagai beberapa istilah dasar, seperti yang ditunjukkan @manojlds.
albfan
2
Jika Anda menggunakan Vagrant, perbaikan ini menyebabkan masalah dengan bash shell. Misalnya nano tidak lagi berfungsi, memberikan kesalahan: 'msys': tipe terminal tidak diketahui
Sirrah
16
Jawaban di atas tidak sepenuhnya berhasil untuk saya, jadi saya lakukan: Tambahkan
export TERM=msys
ke " [githome] / etc / profile " di bagian atas tetapi hanya membuat perubahan untuk git bash. Lalu saya menambahkan
@set TERM=msys
ke " [githome] /cmd/git.cmd " setelah @setlocal (Saya hanya menginstal git yang dijalankan dari baris perintah). Mungkin keputusan ini tidak benar-benar bagus tetapi berhasil untuk saya dan tidak ada peringatan terminal. (Saya menggunakan git versi 1.7.10.msysgit.1).
Ini tampaknya tidak menjadi masalah bagi saya lagi menggunakan git versi 1.7.11.msysgit.1 Saya dapat menghapus $ env: TERM = "msys" dan mengaktifkan kembali ekstensi warna secara lincah tanpa masalah.
John Weldon
Konflik dengan aplikasi lain yang menggunakan terminal berbeda adalah alasan mengapa Anda harus mengikuti jawaban manojlds dan menyetel TERM di .bashrc milik Git Bash daripada mengubah variabel lingkungan di sini, yang akan mempengaruhi semua program.
jwg
1
@jwg poin yang bagus, tetapi saya menggunakan git sepanjang waktu dan saya lebih suka PowerShell daripada bash, jadi harus menjalankan bash hanya untuk mendapatkan keluaran warna terlalu berlebihan bagi saya.
John Weldon
Saya menambahkan ini ke profil cmder..ps1 saya alih-alih profil PowerShell umum saya.
gerrard00
6
Solusi cepat & kotor dalam kasus saya ternyata menggunakan --no-pageropsi.
Secara default, beberapa perintah git (like log) akan menggunakan pager seperti lessjika mereka mengharapkan keluaran yang panjang. Pager memerlukan hal-hal seperti menggulir teks ke atas dan ke bawah dengan tombol panah, yang terkadang tidak berfungsi jika asumsi tentang jenis terminal yang Anda gunakan salah (inilah yang dimaksud dengan "tidak berfungsi penuh").
Jika Anda mengetahui sebelumnya bahwa output Anda akan pendek, atau Anda hanya ingin membuang output ke terminal dan membiarkan program menggulir ke atas ke program terminal Anda, Anda dapat menimpa ini dan tidak menggunakan pager sama sekali, misalnya:
Jika seseorang mendapatkan bash peluncuran ini dari Ekstensi Git, periksa pengaturan untuk Path to linux tools.... Punyaku diatur ke C:\cygwin. Mengubahnya menjadi C:\Program Files (x86)\Git\bin\memperbaikinya untuk saya. Saya tidak perlu menyetel variabel TERM untuk meluncurkan bash dengan cara ini.
Jawaban:
Untuk Git Bash, ini bisa diperbaiki dengan menambahkan baris berikut ke ~ / .bashrc:
-atau-
Yang pertama tampaknya asli oleh git untuk windows, yang kedua adalah bentuk yang dikenal populer untuk "menyembuhkan" juga.
Masalah dapat disebabkan jika beberapa program lain (seperti misalnya Strawberry Perl ) menetapkan
TERM
variabel lingkungan sistem.http://code.google.com/p/msysgit/issues/detail?id=184
sumber
setx TERM msys
.SETX
(bukan hanya SET) menulis variabel env ke registri.Jika Anda mengalami masalah dalam cmd.exe, misalnya, lihat peringatan di sini:
Kemudian atur variabel lingkungan Anda dan sertakan TERM = msys. Setelah itu, setiap kali Anda membuka cmd.exe, variabel Anda akan disetel dengan benar.
SEKARANG ANDA HARUS MEMULAI ULANG SHELL (CMD.EXE). Jalankan saja yang baru. Dan dari sana, Anda seharusnya tidak memiliki masalah lagi. Lagi:
sumber
Jawaban di atas tidak sepenuhnya berhasil untuk saya, jadi saya lakukan: Tambahkan
ke " [githome] / etc / profile " di bagian atas tetapi hanya membuat perubahan untuk git bash. Lalu saya menambahkan
ke " [githome] /cmd/git.cmd " setelah @setlocal (Saya hanya menginstal git yang dijalankan dari baris perintah). Mungkin keputusan ini tidak benar-benar bagus tetapi berhasil untuk saya dan tidak ada peringatan terminal. (Saya menggunakan git versi 1.7.10.msysgit.1).
sumber
Jawabannya dapat ditemukan di sini , di mana penulis solusi mengklaim bahwa:
itu bukan
Anda dapat mengubahnya menjadi
untuk memecahkan masalah yang dihadapi.
sumber
Saya bekerja di PowerShell dan saya memiliki git yang dapat dieksekusi langsung di jalur saya.
Tidak satu pun dari jawaban yang disarankan berhasil, tetapi saya menemukan solusi yang berhasil untuk saya.
Saya menambahkan garis di profil PowerShell saya:
Yang memperbaiki masalah saya.
sumber
Solusi cepat & kotor dalam kasus saya ternyata menggunakan
--no-pager
opsi.Secara default, beberapa perintah git (like
log
) akan menggunakan pager sepertiless
jika mereka mengharapkan keluaran yang panjang. Pager memerlukan hal-hal seperti menggulir teks ke atas dan ke bawah dengan tombol panah, yang terkadang tidak berfungsi jika asumsi tentang jenis terminal yang Anda gunakan salah (inilah yang dimaksud dengan "tidak berfungsi penuh").Jika Anda mengetahui sebelumnya bahwa output Anda akan pendek, atau Anda hanya ingin membuang output ke terminal dan membiarkan program menggulir ke atas ke program terminal Anda, Anda dapat menimpa ini dan tidak menggunakan pager sama sekali, misalnya:
sumber
Jika seseorang mendapatkan bash peluncuran ini dari Ekstensi Git, periksa pengaturan untuk
Path to linux tools...
. Punyaku diatur keC:\cygwin
. Mengubahnya menjadiC:\Program Files (x86)\Git\bin\
memperbaikinya untuk saya. Saya tidak perlu menyetel variabel TERM untuk meluncurkan bash dengan cara ini.sumber