Apakah ada saklar baris perintah untuk lewat git diff
dan perintah lain yang menggunakan less
pager secara default?
Saya tahu saya bisa menyalurkannya ke cat, tetapi itu menghilangkan semua penyorotan sintaksis.
Saya tahu saya dapat mengatur pager di global. Gitconfig menjadi cat oleh GITPAGER=cat
(atau sesuatu seperti itu); tapi saya ingin pager kadang-kadang (tergantung pada ukuran diff).
Tapi, saya lebih suka saklar baris perintah jika ada; dan saya tidak dapat menemukannya, menelusuri halaman manual.
core.pager 'less -+F -+X'
akan menjadi cara yang lebih baru untuk menghapus opsi-opsi itu. Lihat jawaban saya di bawah ini .less
dengan git (bervariasi tergantung padaless
versi): unix.stackexchange.com/questions/107315/…Jawaban:
--no-pager
untuk Git akan mengatakannya untuk tidak menggunakan pager. Melewati opsi-F
untukless
akan memberitahukannya ke halaman tidak jika output cocok dalam satu layar.Pemakaian:
Pilihan lain dari komentar meliputi:
sumber
core.pager
variabel git config.-E
Andaless
agar-F
dapat digunakan.--no-pager
dalam alias, Anda harus awalan perintah dengan itu, dan untuk menghindari kesalahan, Anda harus membuat sebuah alias seperti ini:git config alias.foo '!git --no-pager foo'
. Agak membingungkan. Cukup aliasing untuk'--no-pager foo'
tidak akan berhasil.Seperti jawaban sebelumnya yang disebutkan, meneruskan
-F
opsi untukless
membuatnya berhenti jika konten kurang dari satu layar. Namun, setelah melakukannya, layar diatur ulang, dan Anda akhirnya tidak melihat konten.The
-X
pilihan tidak jauh dengan perilaku itu. Jadi, saya menggunakan yang berikut ini untuk mengaktifkan paging bersyarat berdasarkan jumlah konten:sumber
git config --global --add core.pager "less -F -X"
git1.8.0.2
, yang di atas tidak berfungsi.export LESS="-RFX"
ke.bashrc
atau.zshrc
-X
. Jangan menggunakannya jika Anda tidak suka itu. Saya suka karena cara ini saya bisa merujuk ke hal-hal seperti git SHA dengan melihat hasil dari perintah git sebelumnya dalam sejarah saya tanpa harus mengetikkan perintah lagi. Masing-masing untuk dirinya sendiri.Menggunakan
untuk menghilangkan pager untuk semua perintah untuk semua repositori.
Anda juga dapat menonaktifkan paging untuk sub-perintah Git tunggal dengan menggunakan
pager.<cmd>
pengaturan alih-alihcore.pager
, dan Anda dapat mengubah pengaturan Anda per repositori Git (menghilangkan--global
).Lihat
man git-config
dan caripager.<cmd>
detailnya.sumber
Perubahan terbaru dalam dokumentasi menyebutkan cara berbeda untuk menghapus opsi default untuk
less
("opsi default" menjadiFRSX
).Untuk pertanyaan ini, ini akan menjadi (git 1.8+)
Misalnya, Dirk Bester menyarankan di komentar :
Wilson F menyebutkan dalam komentar dan dalam pertanyaannya bahwa:
Modifikasi itu sudah terlihat di git 1.8.x, seperti yang diilustrasikan dalam " Selalu gunakan pager untuk
git diff
" (lihat komentar). Tetapi dokumentasinya baru saja ditulis ulang ( untuk git 1.8.5 atau 1.9, Q4 2013 ).Lihat komit 97d01f2a untuk alasan di balik kata-kata dokumentasi baru:
config: menulis ulang
core.pager
dokumentasiCatatan: commit b327583 ( Matthieu Moy
moy
, April 2014, untuk git 2.0.x / 2.1, Q3 2014) akan menghapus S secara default:pager: hapus 'S' dari $ KURANG secara default
Dokumentasi akan berbunyi:
sumber
Anda dapat menonaktifkan / mengaktifkan pager untuk output spesifik dalam konfigurasi global juga:
Atau untuk mengatur opsi core.pager, cukup berikan string kosong:
Ini lebih baik menurut saya daripada mengaturnya
cat
seperti yang Anda katakan.sumber
git version 2.5.4 (Apple Git-61)
git diff
sementara membiarkannya bekerja untuk perintah laincode "$($env:UserProfile)\.gitconfig"
dan menambahkan secara manual dipager =
bawah[core]
pengaturan. Jawabannya bekerja untuk sesi powerhell saya saat ini tetapi sepertinya tidak menyimpan pengaturan di mana pun sehingga efektif pada peluncuran berikutnya.Mengenai warna yang dinonaktifkan saat pemipaan:
Gunakan
--color
untuk menghindari pewarnaan yang dinonaktifkan.git diff --color | less -R
Atau konfigurasikan dengan paksa (dalam mis. Gitconfig):
git diff | less -R
Untuk alat non-warna, kemudian gunakan:
git diff --no-color | some-primitive-tool
Mengekspor variabel lingkungan
LESS=-R
(misalnya .bashrc) mengaktifkan dukungan warna secara default di "less":git diff | less
sumber
LESS
variabel lingkunganFRSX
ketika memanggil pager, jika tidak disetel.Ini bekerja untuk saya dengan Git versi 2.1.4 di Linux:
Ini menjadikan Git
cat
sebagai gantinyaless
.cat
hanya membuang outputdiff
ke layar tanpa paging apa pun.sumber
Anda dapat menambahkan alias ke diff dengan pagernya sendiri dengan pager.alias, seperti:
Ini akan menjaga warna dan menggunakan 'cat' sebagai pager ketika dipanggil di 'git dc'.
Juga, hal - hal yang tidak boleh dilakukan:
--no-pager
di alias Anda. Git (1.8.5.2, Apple Git-48) akan mengeluh bahwa Anda mencoba memodifikasi lingkungan.!sh
atau!git
. Ini akan mem-bypass kesalahan lingkungan, di atas, tetapi itu akan mengatur ulang direktori kerja Anda (untuk keperluan perintah ini) ke direktori Git tingkat atas, sehingga setiap referensi ke file lokal tidak akan berfungsi jika Anda sudah berada di subdirektori dari repositori Anda.sumber
git log
tetapi tidakgit log --oneline
. Gunakanpager.log = less -FXR +/^commit.*
, sementara khusus-casing--oneline
opsi denganalias.l1 = log --oneline
danpager.l1 = less -FXR
.Saya memiliki bingkah ini di saya
.gitconfig
dan tampaknya berfungsi dengan baik (dinonaktifkan untuk kedua diff dan acara):sumber
Saya suka menonaktifkan paging dari waktu ke waktu, ketika saya tahu outputnya tidak terlalu lama. Untuk ini, saya menemukan trik rapi menggunakan alias Git:
Atau tambahkan berikut ini ke
[alias]
bagian ~ / .gitconfig:Ini berarti bahwa Anda dapat menggunakan awalan
n
untuk mematikan paging untuk perintah Git, yaitu:sumber
Untuk skrip cepat dan kotor yang saya tulis, saya melakukannya dengan cara ini:
sumber
$GIT_PAGER
diatur.git --no-pager
melakukan hal yang sama tetapi lebih andal.Seperti yang tertulis di man git , Anda dapat menggunakan
--no-pager
perintah apa saja.Saya menggunakannya di:
Kemudian gunakan alias untuk menghindari penggunaan (dan mengingat) perintah panjang.
sumber
Untuk Windows itu adalah:
Ini akan mematikan halaman untuk semua yang ada di
git
dalamnya, termasuk halaman yang sangat menjengkelkangit branch
.sumber
Jika Anda menggunakan oh-my-zsh, di dalam
~/.oh-my-zsh/lib/misc.zsh
file, beri komentar pada baris ini:sumber
unset LESS
di akhir .zshrc.Secara default git menggunakan lebih sedikit menggunakan pager. Saya biasanya lebih suka, karena akan mencetak halaman pertama dan kemudian memungkinkan Anda untuk menelusuri konten.
Selanjutnya, konten akan tetap berada di konsol setelah selesai. Ini biasanya nyaman, karena Anda sering ingin melakukan sesuatu dengan konten setelah pencarian (mis. Kirim email ke komiter dan katakan padanya dia memperkenalkan bug dalam komit terakhirnya).
Jika Anda kemudian ingin mem-pipe konten, akan tidak nyaman untuk menggulir untuk mencetak semuanya. Hal yang baik dengan lebih banyak adalah Anda akan dapat menggabungkannya dengan pipa dan akan menyalurkan melalui segalanya, misalnya.
Pada dasarnya lebih banyak yang Anda butuhkan, kecuali Anda tidak ingin konten tetap berada di konsol ketika selesai. Untuk menggunakan lebih banyak, lakukan seperti di bawah ini.
sumber
Atau
--no-pager
.BTW: Untuk mempertahankan warna dengan kucing
sumber
Cukup ikuti instruksi di bawah ini.
vi ~/.gitconfig
terminal Anda.LESS="-F -X $LESS"
garis.:wq
dan masuk.sumber