Saya memiliki beberapa repositori git yang dimiliki bersama, dan file batch / bash sederhana untuk mengulanginya. Saya sering mengulanginya dengan perintah log untuk segera melihat status mereka. Ini berfungsi dengan baik, kecuali untuk satu hal: jika pesan komit lebih panjang dari jumlah karakter konsol saya lebar (atau memiliki banyak baris), git menunjukkan garis, lalu baris baru dengan (AKHIR) dan saya harus menekan q untuk melanjutkan (saya kira itu menyalurkan output melalui lebih banyak atau sesuatu seperti itu). Contoh:
> gitloop . "git log --decorate=short --pretty=oneline -n1"
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log
625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log
dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log
-(END)
Ini agak merepotkan karena saya harus menekan q beberapa kali, sedangkan saya hanya ingin melihat semua oneliners itu sekaligus.
Bagaimana cara menonaktifkan perilaku ini (sebaiknya dengan tetap mempertahankan format log ini)?
Jawaban:
Git memiliki opsi untuk menonaktifkan pager:
Jika pager Anda memotong garis dan Anda ingin mempertahankan perilaku itu, salah satu pipa ke
cut
...... atau setel variabel lingkungan
GIT_PAGER
sebelum pemanggilan:sumber
--no-pager
default atau bahkan lebih baik dengan cara pintas untuk opsi ini bila diperlukan? Saya pikir dari aliasinggitnp
untukgit --no-pager
, tapi saya pikir ada solusi yang lebih baik.git
untuk/usr/bin/git --no-pager
yang akan menonaktifkan pager untuk semua panggilan git Anda.git
tidak memiliki pager bawaan . Sebaliknya, ia mengikuti filosofi Unix dan menggunakan apa pun yang Anda miliki$PAGER
.git
hanya selalu menggunakan$PAGER
alih-alih melakukannya hanya secara acak tidak seperti banyak alat yang ditulis dengan buruk lainnya. Satu-satunya sihirgit
memiliki adalah bahwa jika$LESS
ini tidak didefinisikan , akan menentukan$LESS
nilaiFRX
. Lihat sekitar github.com/git/git/blob/master/Documentation/config.txt#L766 untuk detail selengkapnya.git
hanya memberikan sebuah overrideGIT_PAGER
yang akan memungkinkan Anda untuk menentukan nilai kustom yang akan digunakan sebagai gantiPAGER
setiap kali git membutuhkan paging.Solusi lain untuk masalah menonaktifkan pager secara permanen khususnya saat menggunakan
log
subperintah:hanya untuk repo saat ini:
git config pager.log false
untuk instalasi git Anda (yaitu semua repositori di mesin Anda):
git config --global pager.log false
Seperti yang Anda bisa menebak, karya-karya yang sama jika pager yang dibutuhkan untuk menjadi pada atau off untuk beberapa subcommands lainnya selektif.
E. g. untuk
branch
(yang mencetak cabang) subperintah itu akangit config pager.branch false
Solusi yang diusulkan bisa dibilang lebih elegan dibandingkan
menggunakan
git --no-pager
setiap kali Anda menjalankan perintah tertentu.Karena, sangat mungkin, Anda tidak ingin mengetiknya setiap kali.
menentukan
git --no-pager
sebagai alias untukgit
Karena, sangat mungkin, Anda ingin menghindari konfigurasi global implisit ATAU Anda ingin pager diaktifkan dalam beberapa kasus.
bergantung pada beberapa variabel lingkungan seperti
PAGER
atauGIT_PAGER
.Karena untuk melakukan itu, Anda perlu memastikannya diatur dalam sesi terminal Anda saat ini. Dan, jika Anda ingin mereka disetel ke beberapa nilai kustom secara otomatis setiap kali terminal baru Anda dibuat, Anda perlu mengubah salah satu file shell-bootstrap seperti misalnya
~/.bashrc
. Itu bukan masalah besar. Tetapi file-file yang di-bootstrap ini sering diubah oleh aplikasi lain juga dan berisi banyak hal lain, tidak hanya yang digunakan oleh Git. Jadi, secara teori, lebih baik menetapkan pengaturan terkait git menggunakangit config
daripada memasukkannya ke misalnya~/.bashrc
.Solusi alternatif untuk menonaktifkan
pager
untuk semua subcommands adalah untuk menentukancat
sebagai git utilitas akan digunakan untuk paging:git config core.pager cat
ATAUgit config --global core.pager cat
Jawaban saya agak mengulang yang di bawah ini:
"mencegah git diff menggunakan pager?"
https://stackoverflow.com/a/6986231/6103242
Ini dirujuk untuk menunjukkan diskusi lain yang relevan.
sumber
Nonaktifkan pager untuk semua perintah:
sumber
Anda menyalurkannya ke less -F jika --no-pager tidak berfungsi untuk Anda.
sumber