git diff - gestire le linee lunghe?
Domanda
Sto eseguendo git-diff su un file, ma la modifica è alla fine di una lunga fila.
Se uso i tasti cursore per spostarmi a destra, perde la codifica a colori e, peggio ancora, le linee non si allineano, rendendo più difficile tenere traccia delle modifiche.
C'è un modo per prevenire quel problema, o semplicemente per fare il wrapping delle linee invece?
(eseguendo git 1.5.5 tramite mingw32)
Soluzione
La visualizzazione dell'output di git diff
è gestita da qualunque cercapersone che stai utilizzando.
Comunemente, sotto Linux, verrebbe utilizzato less
.
Puoi dire a git di usare un altro cercapersone impostando la variabile d'ambiente GIT_PAGER
. Se non ti dispiace per il paging (ad esempio, il tuo terminale ti consente di scorrere indietro) potresti provare esplicitamente a impostare GIT_PAGER
su vuoto per fermarlo usando un cercapersone. Sotto Linux:
$ GIT_PAGER='' git diff
Senza un cercapersone, le linee andranno a capo.
Se il tuo terminale non supporta l'output colorato, puoi anche disattivarlo usando l'argomento --no-color
o inserendo una voce nella sezione colore del tuo file di configurazione git.
$ GIT_PAGER='' git diff --no-color
Altri suggerimenti
O se usi meno come cercapersone predefinito, digita -S
mentre visualizzi il diff per riattivare il wrapping in less.
Puoi anche usare git config
per impostare il pager da avvolgere.
$ git config core.pager 'less -r'
Imposta l'impostazione del cercapersone per il progetto corrente.
$ git config --global core.pager 'less -r'
Imposta il cercapersone a livello globale per tutti i progetti
Con il pieno credito di Josh Diehl in un commento a questa risposta ??a >, Mi sento comunque che questa dovrebbe essere una risposta a se stessa, quindi aggiungendola:
Un modo per affrontare le differenze nelle lunghe righe è usare un diff orientato alle parole. Questo può essere fatto con:
git diff --word-diff
In questo caso, otterrai un output diff significativamente diverso, che ti mostra specificamente cosa è cambiato all'interno di una linea.
Ad esempio, invece di ottenere qualcosa del genere:
diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
-this is a short line
+this is a slightly longer line
Potresti ottenere qualcosa del genere:
diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
this is a [-short-]{+slightly longer+} line
Oppure, con colorazione, invece di questo:
Potresti ottenere questo:
Ora, se stai confrontando una linea molto lunga, potresti avere ancora problemi con la situazione del cercapersone che hai descritto in origine e che è stata affrontata, apparentemente con soddisfazione, in altre risposte. Spero che questo ti dia un nuovo strumento, tuttavia, per identificare più facilmente cosa è cambiato sulla linea.
Per usare meno come cercapersone e rendere permanente il ritorno a capo, puoi semplicemente abilitare l'opzione piega linee lunghe:
git config --global core.pager 'less -+S'
In questo modo non è necessario digitarlo mentre si utilizza meno.
Saluti
Ho appena cercato su Google. GIT_PAGER = 'less -r'
funziona per me
Mac OSX: nessuna delle altre risposte, tranne '-S' di qualcuno45 mentre è in esecuzione, ha funzionato per me. Ci sono voluti i seguenti per rendere persistente il ritorno a capo automatico:
git config --global core.pager 'less -+$LESS -FRX'
Da Git 1.5.3 ( set 2007 )
è stata disponibile un'opzione --no-pager
.
git --no-pager diff
Come posso impedire a git diff di utilizzare un cercapersone?
A partire da v2.1, wrap è l'impostazione predefinita
Otto anni dopo trovo una risposta superiore, da https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff :
git config core.pager `fold -w 80 | less`
Ora installi git diff attraverso fold, prima, poi a less: avvolto, meno l'altezza della pagina è corretta, mantieni l'evidenziazione della sintassi.
Potresti semplicemente reindirizzare l'output di git diff su more:
git diff | more
Non è una soluzione perfetta, ma gitk
e git-gui
possono entrambi mostrare queste informazioni,
e hanno barre di scorrimento.
Quando stai utilizzando " git diff " e mostra diverse pagine (vedi ": " alla fine della pagina) in questo caso puoi digitare " -S " e premi Invio. (S dovrebbe essere maiuscola). alternerà le linee lunghe.
Nessuno lo ha sottolineato fino ad ora. È abbastanza semplice da ricordare e non è necessario eseguire alcuna configurazione aggiuntiva in git config
git diff --color | less -R
elenca la configurazione corrente / predefinita:
$ git config --global core.pager
less -FXRS -x2
quindi aggiorna ed escludi -S come:
$ git config --global core.pager 'less -FXR -x2'
la -S: fa sì che le linee più lunghe della larghezza dello schermo vengano troncate anziché piegate.
Quando sono nei guai, spesso ricorro a DiffMerge. Eccellente strumento diff con evidenziazione diff in linea. Inoltre, nelle ultime versioni hanno aggiunto una modalità per avere una modalità orizzontale.
Non sono stato in grado di configurare git per usarlo, però. Quindi devo andare in giro per ottenere prima entrambe le versioni del file.
Il modo più semplice per farlo, nel mio caso uso Linux os
git diff > text.txt
Questa riga di comando crea e inserisce l'output git diff all'interno di text.txt quindi puoi aprirlo con un altro editor di testo, ad esempio testo sublime.
sublime text.txt
Spero che ti aiuti.
non dimenticare di cancellarlo dopo. = 0)