Saya menjalankan git-diff pada file, tetapi perubahannya ada di akhir baris yang panjang.
Jika saya menggunakan tombol kursor untuk bergerak ke kanan, kode warna akan hilang — dan lebih buruk garisnya tidak berbaris — membuatnya lebih sulit untuk melacak perubahan.
Apakah ada cara untuk mencegah masalah itu atau membuat garis-garisnya dibungkus?
Saya menjalankan Git 1.5.5 via mingw32.
git diff --color-words | fold
fold
tetapi menghilangkan warna. Karena Anda menentukan,--color-words
saya asumsikan Anda berhasil meneruskan warnafold
. Bagaimana?Jawaban:
Tampilan output
git diff
ditangani oleh pager apa pun yang Anda gunakan.Umumnya, di Linux,
less
akan digunakan.Anda dapat memberi tahu git untuk menggunakan pager yang berbeda dengan mengatur
GIT_PAGER
variabel lingkungan. Jika Anda tidak keberatan tentang paging (misalnya, terminal Anda memungkinkan Anda untuk menggulir ke belakang), Anda dapat mencoba mengatur secara eksplisitGIT_PAGER
untuk mengosongkannya agar berhenti menggunakan pager. Di bawah Linux:Tanpa pager, garis akan terbungkus.
Jika terminal Anda tidak mendukung output berwarna, Anda juga dapat mematikannya menggunakan
--no-color
argumen, atau meletakkan entri di bagian warna file konfigurasi git Anda.sumber
Atau jika Anda menggunakan kurang sebagai pager default, cukup ketik
-S
sambil melihat diff untuk mengaktifkan kembali pembungkus.sumber
--word-diff
untuk melihat highlight kode warna dari kata--word-diff
bagian ini layak untuk memiliki jawabannya sendiri, karena menurut saya hal itu banyak membantu menyelesaikan masalah mendasar: mencari tahu apa yang berubah pada garis panjang. Jadi, saya membuatnya menjadi: stackoverflow.com/a/19253759/313756-S
dengan huruf kapital S, bukan-s
. Kurang menampilkan pesan "Lipat garis panjang (tekan RETURN)" di bagian bawah setelah saya mengetik-S
, dan kemudian menekan Return memungkinkan pembungkus.Anda juga dapat menggunakan
git config
untuk mengatur pager untuk dibungkus.Menetapkan pengaturan pager untuk proyek saat ini.
Mengatur pager secara global untuk semua proyek
sumber
git config --global core.pager "less -r"
man less
,-r
mengatakan apa-apa tentang pembungkus.Dengan pujian penuh kepada Josh Diehl dalam komentar untuk jawaban ini , saya tetap merasa ini seharusnya menjadi jawaban bagi dirinya sendiri, jadi menambahkannya:
Salah satu cara untuk menghadapi melihat perbedaan dalam antrean panjang adalah dengan menggunakan diff berorientasi kata. Ini dapat dilakukan dengan:
Dalam hal ini, Anda akan mendapatkan output diff yang sangat berbeda, yang menunjukkan secara spesifik apa yang telah berubah dalam satu baris.
Misalnya, alih-alih mendapatkan yang seperti ini:
Anda mungkin mendapatkan sesuatu seperti ini:
Atau, dengan pewarnaan, alih-alih ini:
Anda mungkin mendapatkan ini:
Sekarang, jika Anda membandingkan garis yang sangat panjang, Anda mungkin masih memiliki masalah dengan situasi pager yang Anda jelaskan sebelumnya, dan yang telah diatasi, tampaknya untuk kepuasan, di jawaban lain. Semoga ini memberi Anda alat baru, meskipun, untuk lebih mudah mengidentifikasi apa yang telah berubah di telepon.
sumber
--word-diff
:color
,plain
, danporcelain
. Juga, seseorang dapat mengubah regex untuk batas kata dengan--word-diff-regex
. Standarnya tampaknya\S+
. ( v2.1.1 )--color-words
tampaknya menjadi singkatan--word-diff=color
, yang bagus ketika Anda hanya melihat diff, tidak membagikannya.--word-diff=porcelain
lebih baik daripada--word-diff
karenaporcelain
akan mengatur perubahan pada baris yang terpisah, sedangkan--word-diff
menempatkan perubahan sejajar. Garis yang terpisah memungkinkan Anda untuk melihat perbedaan dengan lebih mudah ketika perbedaannya halus.Untuk menggunakan pager lebih sedikit dan membuat pembungkus garis permanen, Anda cukup mengaktifkan opsi flip-long-line:
Dengan cara ini Anda tidak perlu mengetiknya saat menggunakan kurang.
Bersulang
sumber
git config --global core.pager 'less -S
Cari saja yang ini di Google.
GIT_PAGER='less -r'
bekerja untukkusumber
less -R
(Sebenarnya, saya menggunakanless -eiFRSX
, yang memecahkan masalah warna dan garis-membungkus juga.)Mac OSX: Tidak ada jawaban lain kecuali '45 'milik seseorang sementara kurang berjalan berfungsi untuk saya. Dibutuhkan yang berikut untuk membuat pembungkus kata tetap ada:
sumber
-+$LESS
dilakukan parameter? Kecuali git yang mendefinisikannya, variabel lingkungan KURANG saya bahkan tidak disetel.$LESS
diatur ke beberapa nilai (misalnya oleh a.login
atau a.profile
atau sesuatu), dan opsi itu, saya pikir, hanya menambahkan default, dan kemudian menambahkan-FRX
di atas itu.$LESS
tidak terdefinisi.Sejak Git 1.5.3 ( Sep 2007 )
sebuah
--no-pager
pilihan yang telah tersedia.Bagaimana cara mencegah git diff menggunakan pager?
Contoh
Dimulai dengan v2.1, bungkus adalah default
Git v2.1 Catatan Rilis
sumber
Delapan tahun kemudian saya menemukan jawaban yang unggul, dari /superuser/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff :
Sekarang Anda menyalurkan diff git melalui lipatan, pertama, kemudian kurang: dibungkus, kurang tinggi halaman benar, tetap sorot sintaksis.
sumber
Ketika Anda menggunakan "git diff" dan menampilkan beberapa halaman (Anda lihat ":" di akhir halaman) dalam hal ini Anda dapat mengetik "-S" dan tekan enter. (S harus menjadi modal). itu akan beralih lipat garis panjang.
sumber
Noone menunjukkan ini sampai sekarang. Cukup sederhana untuk diingat dan tidak ada konfigurasi tambahan yang perlu dilakukan di git config
sumber
git diff --color | less -FR
untuk perubahan kecil saat tidak perlu gulirAnda cukup menyalurkan output git diff ke lebih banyak:
sumber
Bukan solusi yang sempurna, tetapi
gitk
dangit-gui
keduanya dapat menampilkan informasi ini, dan memiliki scrollbar.sumber
daftar konfigurasi saat ini / default:
kemudian perbarui dan tinggalkan -S seperti:
-S: Menyebabkan garis yang lebih panjang dari lebar layar untuk dipotong daripada dilipat.
sumber
Ketika dalam kesulitan, saya sering menggunakan DiffMerge. Alat diff luar biasa yang memiliki in-line highlighting Juga, dalam versi terbaru mereka menambahkan mode untuk memiliki mode horizontal.
Saya belum bisa mengkonfigurasi git untuk menggunakannya. Jadi saya harus mencari-cari kedua versi file terlebih dahulu.
sumber