log git berperilaku seperti kurang


3

git log -{n}, kapan -n cukup kecil, tidak terbuka less itu hanya mencetaknya ke layar. Itu diinginkan. git log -1 seharusnya tidak mengambil layar penuh.

Sayangnya, dalam bash shell MINGW, setelah saya menjalankan perintah non-git, git log berperilaku seolah-olah saya telah menabraknya less dan mendorong q. (Dengan kata lain data dicetak ke bagian bawah layar dan saya berakhir dengan tumpukan ruang putih di atas).

Demo imajiner (Maafkan panjangnya):

>> clear









>> git log -1




commit 123123...
Author: CPfohl
Date: {today}
    {Message}

>> git log -1
commit 123123...
Author: CPfohl
Date: {today}
    {Message}

Ini bekerja tidak peduli apa pun perintah git yang saya jalankan sebelumnya git log, selama git log -{n} aku s setelah perintah git.

Apakah ini bug, atau adakah cara agar perilaku ini normal?

Jawaban:


3

Jika Anda ingin menonaktifkan pagination untuk beberapa / semua perintah git, Anda dapat:

  • atur nilai konfigurasi ( pager.<cmd> atau core.pager untuk semua perintah) ke cat
  • menggunakan --no-pager pilihan

Tapi mungkin saya belum mengerti pertanyaan Anda. Perilaku yang dijelaskan harus dapat diubah dengan mengatur perintah pagination yang sesuai ( less dengan beberapa opsi) dalam opsi konfigurasi yang disebutkan di atas.


Bagaimana jika saya hanya ingin melakukan ini ketika menjalankan git log dengan -n pilihan?
Crisfole

Anda dapat mencoba menambahkan alias perintah (termasuk opsi -n) dan untuk penggunaan alias itu pager.alias_name = less .... Tapi saya tidak tahu apakah alias dapat digunakan sebagai perintah dalam opsi konfigurasi yang disebutkan.
Martin Vejmelka

2
Opsi --tidak ada pager berfungsi seperti pesona! Tapi sepertinya --no-pager harus disediakan sebelum "log" agar bisa berfungsi. Anda harus memperbarui jawaban untuk memperjelas ini. "git log ... --tidak ada pager" tidak berfungsi, sementara "git --tidak ada pager ..." tidak.
CoolMcGrrr

0

Atau Anda juga bisa mendefinisikan alias di file konfigurasi git yang memungkinkan Anda menampilkan log dengan cara khusus, jika Anda memasukkan perintah berikut, misalnya Anda mengatur .gitconfig untuk diedit dengan Sublime Text 3:

git config --global core.editor "'c:/Program Files/Sublime Text 3/sublime_text.exe'" -w

git config --global alias.showconfig "config --global -e"

Selanjutnya Anda dapat menambahkan alias di git untuk menunjukkan kepada Anda komit terbaru di semua cabang dalam repositori:

Tambahkan [alias] jika tidak ada di .gitconfig, lalu:

latest = "!f() { echo "Latest \"${1:-11}\" commits accross all branches:"; git log  --abbrev-commit --date=relative --branches --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset%n' -n ${1:-11};  } ; f"

Alias ​​di sini menggunakan a fungsi shell dengan parameter yang diatur ke variabel shell. Jika Anda tidak menentukan nilai parameter, alias akan menggunakan 11 sebagai nilai default (Sintaksnya dapat dengan mudah ditafsirkan dengan -11, tetapi sintaks $ {1: -11} berarti parameter pertama dalam shell dan menetapkan default nilai untuk parameter jika tidak ada. Sedikit seperti nilai default di C # atau parameter default di Powershell.

Seperti yang Anda lihat, alias yang kami berikan kepada git dapat berisi beberapa perintah, dipisahkan oleh tanda titik dua.

Saya mencoba ini dengan berlari git terbaru dan git terbaru 3 di ambil contoh layar output di bawah ini. Anda melihat suntingan konfigurasi git saya di sebelah kiri.

Dengan fungsi dan alias shell, kita bisa melakukan lebih banyak hal dengan Git tanpa harus mengetik terlalu banyak. Sintaks fungsi shell mengikuti aturan BASH dan dapat digunakan juga di lingkungan Windows dengan CMD.

enter image description here

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.