Mengapa kurang dijalankan oleh git yang tidak perlu?

22

Ketika saya menjalankan git branch(dari bash atau csh), ia secara otomatis menyalurkan output less. Namun, dengan hanya beberapa cabang di repositori ini tidak perlu, itu menjengkelkan, karena daftar cabang menghilang begitu saya berhenti lebih sedikit.

Memeriksa ~/.gitconfigfile dan .git/configfile lokal tidak menemukan apa pun tentang pager atau hal lain yang menyebabkannya. Kalau tidak, tidak ada yang saya temukan dalam pencarian web yang membantu atau menjanjikan.

Mengapa ini terjadi, dan apa (jika ada) yang dapat saya lakukan untuk lessberlari ketika dibutuhkan (misalnya ketika melakukan git logketika ada banyak sejarah) tetapi tidak sebaliknya (seperti git branchhanya dengan 2 atau 3 cabang)?

GreenMatt
sumber
4
Secara umum git tidak tahu berapa banyak output yang akan dihasilkan dari perintah apa pun, jadi ia mengirim semuanya secara default melalui pager, yang mungkin akan lebih sedikit.
icarus
6
Hal pertama yang dilakukan pada instalasi -nix baru adalah memasukkannya ke export LESS=-Xdalam .profile. Ini menjaga kurang dari "membersihkan" layar. Saya benci bahwa pengaturan standar membersihkan layar karena saya sering perlu memotong dan menempelkan barang atau menggunakannya sebagai referensi.
Peter - Reinstate Monica
3
@Peter Untuk memperjelas (tidak bermaksud kata-kata), hanya orang yang tidak ingin perilaku pembersihan layar yang melakukan hal itu.
David Z
@icarus: Tampaknya logis. Namun, perilaku saya berubah baru-baru ini. Saya tidak yakin mengapa - mungkin perubahan pada beberapa variabel lingkungan yang dipaksakan dari orang-orang keamanan perusahaan "pada" tinggi yang tampaknya tidak peduli betapa sulitnya mereka membuat pekerjaan orang lain. Ngomong-ngomong, git tiba-tiba berubah dari apa yang saya anggap perilaku masuk akal menjadi menjalankan satu baris output melalui sedikit sehingga output hilang ketika saya berhenti kurang.
GreenMatt
Jika perilaku baru-baru ini berubah, setidaknya mungkin bahwa pengaturan variabel KURANG ditambahkan ke file startup shell sistem, misalnya / etc / profile, /etc/profile.d/*, /etc/bash.bashrc, Apakah Anda memiliki variabel ini di lingkungan Anda?
icarus

Jawaban:

35

Anda dapat mengatur yang berikut ini:

git config --global core.pager 'less -FRX'

Ini akan memastikan bahwa lessakan

  • Keluar jika seluruh file dapat ditampilkan di layar pertama ( F)
  • Keluarkan karakter kontrol mentah untuk pemformatan terminal ( R)
  • Potong garis panjang ( S)
  • Jangan kirim string init / de-init ke terminal - hindari membersihkan layar saat keluar ( X)

Sunting: Menghapus Sopsi berdasarkan komentar Peter A. Scheider

QIS
sumber
7
dan hapus --globaljika Anda hanya ingin menerapkan ke repositori saat ini.
Mosvy
8
Pengaturan variabel lingkungan LESSuntuk -FR, menambahkan dalam X dan S dengan selera adalah cara lain.
icarus
11
Kemungkinan besar OP menemukan bahwa perilaku itu mengganggu secara umum; Saya kira kita bisa mengatur variabel lingkungan export PAGER='less -FRSX'dan git akan menghormatinya (tidak ada konfigurasi git tertentu). Btw, -Sberbahaya karena diam-diam membuang output.
Peter - Reinstate Monica
4

Ada beberapa jawaban bagus untuk lessperilaku tuning , tetapi karena jari kelabu saya terbiasa mengetik |moreketika saya menginginkannya, dan karena saya masih lebih selaras dengan lincah daripada dengan git, saya tertarik pada

git config --global core.pager cat
dgc
sumber
3
Halaman manual untuk git-configmenyatakan bahwa nilai core.pagerdimaksudkan untuk ditafsirkan oleh shell. Ketika Anda mengaturnya no, ia mencoba untuk mengeksekusi perintah no, yang kemungkinan besar tidak ada, maka itu kembali ke hanya mengeluarkan konten. Anda masih akan melihat pesan kesalahan di kepala. Yang mungkin ingin Anda lakukan adalah mengaturnya cat.
QIS
1
Itu informasi yang bagus, tetapi yang saya sukai adalah tidak melakukan apa pun . Tidak catada gunanya, dan saya khususnya tidak percaya Linux menggunakan pengelola untuk tidak mengubah apa yang dilakukan kucing (lih. File kutip yang lsdikutip ). Mungkin saya harus menggunakan "jangan pernah" sebagai gantinya. Kecil kemungkinan program seperti itu ada.
dgc
7
Pengaturan core.pagerke string kosong ( git config core.pager '') atau untuk tidakcat akan menjalankan apa pun. Anda dapat mengatasinya sendiri jika Anda tidak percaya ;-) Tidak ada alasan apa pun untuk mengubahnya menjadi perintah dummy . no
Mosvy
Terima kasih banyak! Saya tidak tahu string kosong akan menyebabkan tidak ada eksekusi perintah. Mengenai cat, apakah Anda mengatakan bahwa git memiliki kasus khusus untuk string dalam kode pager - yaitu yang catsecara efektif merupakan sinonim untuk "null"? Saya berharap untuk mengeksekusi cat.
dgc
Tampaknya memang inilah masalahnya. Egad. Tetapi juga bagus: Saya selalu mencari lebih banyak cara untuk membenarkan ketidaksukaan saya pada git.
dgc