Ketika saya menggunakan git branch
perintah untuk mendaftar semua cabang, saya melihat output dari git branch | less
.
Perintah git branch
ini seharusnya menampilkan daftar cabang, seperti ls
halnya untuk file.
Ini adalah output yang saya dapatkan:
Bagaimana cara mendapatkan perilaku default git branch
? Apa yang menyebabkan keluaran halaman?
Saya menggunakan ZSH dengan oh_my_zsh
(tidak ada untuk Git di sana), dan .gitconfig
penampilan saya seperti ini:
[user]
email = [email protected]
name = Dennis Haegler
[push]
default = simple
[merge]
tool = vimdiff
[core]
editor = nvim
excludesfile = /Users/dennish/.gitignore_global
[color]
ui = true
[alias]
br = branch
ci = commit -v
cam = commit -am
co = checkout
df = diff
st = status
sa = stash
mt = mergetool
cp = cherry-pick
pl = pull --rebase
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh
\"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true
git branch
dengan sesuatu yang lain. Menggunakan deteksi pipa , Git akan menampilkan daftar cabang ke stdout dalam perintahgit branch > branches.txt
ataugit branch | wc -l
.ESC/q
setelahgit branch
cek sederhana .less
Anda, Anda dapat menambahkan--no-init --quit-if-one-screen
keLESS
variabel lingkungan Anda , yang akan menyebabkanless
hanya menulis ke stdout jika teks dapat dilihat tanpa menggulir. Lihatman less
untuk lebih jelasnya.[pager] branch = false
(pada dua baris).Seperti jawaban lain tunjukkan, Git secara default mem-piping dirinya sendiri ke pager (
less
secara default) untuk sebagian besar perintah.Namun, poin penting adalah bahwa ketika variabel lingkungan KURANG tidak disetel, Git menetapkannya ke FRX , dan konsekuensinya adalah bahwa perilaku yang dapat dilihat pengguna sama seperti jika pager tidak digunakan ketika output perintah pendek (yaitu jika Anda hanya memiliki beberapa cabang). Melihat pria lebih sedikit :
Jika Anda mendapatkan perilaku yang Anda uraikan, kemungkinan besar Anda telah
$LESS
menetapkan hal lain, dan tidak menyetelnya (unset LESS
) akan menghilangkan masalah sambil menjaga perilaku "pager" untuk hasil yang lama. Atau, Anda dapat mengaktifkan perilaku untuk tetap$LESS
apa adanya dengan menambahkan ini ke.gitconfig
file Anda :Jika Anda benar-benar tidak menyukai hal pager, Anda dapat menonaktifkannya secara global atau berdasarkan perintah (lihat jawaban lain)
sumber
Bukan untuk berdebat semantik, tetapi perilaku yang Anda dapatkan adalah default. Itu sebabnya Anda mendapatkannya ketika Anda tidak meminta sesuatu yang berbeda. Secara default,
branch
(dan banyak perintah Git lainnya) menggunakan pager saat mengirim output ke terminal.Anda dapat mengganti default ini dengan menggunakan
--no-pager
opsi:Atau jika Anda mengarahkan output ke file, Git harus mendeteksi bahwa itu tidak menulis ke terminal dan karenanya tidak boleh menggunakan pager. (Di sisi lain, itu menunjukkan kasus penggunaan scripting, dalam hal ini Anda harus mempertimbangkan menggunakan perintah plumbing seperti
git for-each-ref
dalam preferensigit branch
.)sumber
git --no-pager branch
bekerja. Tapi bagaimana ini diatur? HanyaPAGER
variabel lingkungan diatur keless
. Ini bukan perilaku default. Semua perguruan tinggi saya memiliki output sebagai daftar yang dicetak ke terminal.Perilaku Git ini juga semakin menyebalkan bagi saya. Saya mendapatkan daftar tag saya
less
ketika hanya ingin daftar tag misalnya.Seseorang dapat mengontrol perilaku ini juga dengan mengubah Git PAGER default menjadi
cat
bukanless
. Saya lebih suka menggulir di iTerm daripada di editor. Saya suka menggunakan editor ketika saya mau.Begitu:
sumber
git log
memang mengganggu. Saya hanya merindukan perilaku asli, tetapi tidak punya waktu untuk meningkatkan alur kerja harian saya di pespektif ini.git log
...Bagi mereka yang ingin memperbarui mereka
~/.gitconfig
untuk memperbaikinya, akan terlihat seperti ini:sumber
git config --list --show-origin
untuk men-debug pengaturan apa yang / tidak diatur untuk Anda / sistem Anda dan dari mana ( stackoverflow.com/q/12254076/1590950 ).Karena Git secara default membuka output dalam pager (setidaknya di Ubuntu). The jawaban yang diterima benar-benar akan menggantikan pager, yang Anda mungkin tidak seperti jika output sangat panjang.
Saya akan merekomendasikan mengganti pager dengan
less
, sehingga tidak "gulir" output kurang dari ketinggian terminal.sumber
Lakukan hal berikut:
sumber
Jawaban yang diterima tampaknya salah. Ada dua masalah:
git branch
tidak menggunakan pager selalu, yang tidak akan diinginkan ketika ada banyak output.Alasan sebenarnya adalah bahwa bash dan zsh memiliki definisi default yang berbeda tentang KURANG: bash tidak mendefinisikan apa-apa, sedangkan zsh mendefinisikannya
-R
. Ketika saya melakukannyaunset LESS
di zsh, semuanya kembali normal ....The
-R
perilaku mungkin masih diinginkan. Jika demikian, Anda dapat menambahkan instruksi berikut ke .zshrc Anda agar semuanya berjalan:-F
'menyebabkan lebih sedikit untuk keluar secara otomatis jika seluruh file dapat ditampilkan pada layar pertama'. Namun,-X
perlu ditentukan secara bersamaan, jika tidak, output tidak akan ditampilkan ketika ada kurang dari satu layar penuh dari output.sumber
https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables
Untuk mengatasi masalah Anda, Anda dapat menghapus PAGER dan GIT_PAGER di shell Anda.
sumber
PAGER
(GIT_PAGER
adalah unset) masalah masih ada. Apakah ada lokasi saya harus memeriksa env vars ini?PAGER= git branch
(dengan satu spasi setelah dan tidak ada sebelum tanda sama dengan persis seperti yang ditulis). Tidak tahu, apakah itu lebih baik daripada misalnyagit branch | cat
,.Saya memiliki masalah yang sama dengan
git status
dangit config --global pager.status false
menyelesaikannya juga.sumber