Come posso ottenere il massimo dal mio dollaro con il comando "diff"?


9

Ho provato a usare il diffcomando linux in passato senza molta fortuna o pazienza. Di solito finisco per usare un'utilità GUI come DiffMerge o Kdiff.

Di recente ho iniziato a provare a diffriutilizzare per confrontare i file su sistemi remoti tramite ssh e ho trovato l' -y / --side-by-sideopzione molto utile, ma sento ancora che non sto sfruttando al massimo questa utilità.

Quindi sono curioso di sapere come ottenere le seguenti cose:

  1. Evidenzia le modifiche o usa il codice colore per rendere più leggibile l'output
  2. Unisci - Seleziona le linee con differenze ed effettua le modifiche in uno dei file

Inoltre, non ho trovato molti buoni esempi su Google, quindi se hai alcuni segreti di Linux-Fu per ottenere il massimo da diff, potresti per favore condividere? Parlerò principalmente i file di configurazione basati su testo ma eventuali trucchi e suggerimenti sarebbero meravigliosi.

Per riferimento - L'utilità DiffMerge mostra facilmente le modifiche fianco a fianco con l'evidenziazione del colore. Le icone in alto ti consentono di alternare le visualizzazioni di "mostra tutto", "mostra differenze" e "mostra differenze con il contesto". Mi piacerebbe alcune di queste funzionalità al prompt dei comandi.

ps: dovrei anche notare che un'altra opzione che trovo abbastanza utile è la --suppress-common-linesquale ho appreso in questo post di blog conciso e leggibile .


3
Uso vimdiff parecchio.
Nicerobot,

@nicerobot Potresti pubblicare questo come una risposta - è uno strumento molto utile e utile.
rozcietrzewiacz,

Non puoi, è gratis ..... Siamo spiacenti ma non posso
farne a

Faccio la maggior parte del mio diffing in Emacs.
Gilles 'SO- smetti di essere cattivo' il

@whoami - cosa?
Cwd,

Risposte:


9

In nessuna sequenza particolare:

  • meld è un programma diff molto carino che fa diff diffs molto belli e si fonde in tre modi.
  • git config --global merge.conflictstyle diff3ti dà output di unione a tre vie da utilizzare con strumenti come meld.
  • wdiffla parola differisce, molto bella se colorata :wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" ...
  • Per ridurre al minimo l'innesto diffnell'output, di solito utilizzo l' opzione --ignore-all-space( -w)
  • diff-ignore-moved-lines* fa quello che dice sull'etichetta.
  • difff* può essere utilizzato per diff solo le righe che corrispondono in determinati campi.

* Dichiarazione di non responsabilità: sono l'autore e li ho sviluppati per aiutare con la CLI e la GUI a differenziarsi e fondersi.


1
Ne uso anche diffuseun bel po '.
Arcege,

diff -u è anche abbastanza semplice, trovo.
gabe.


3

Per ottenere la colorazione nel diff dovresti consultare http://colordiff.sourceforge.net/ . Questo è solo un wrapper per diff e, come tale, tutte le opzioni di comando funzionano ancora.

Nel caso abbiate Ubuntu basta scrivere:

    # sudo apt-get install colordiff

Correndo il rischio di non soddisfare il tuo caso d'uso, gitè un VCS molto bello che si integra bene con molti strumenti di differenziazione e fusione (sia a riga di comando che a interfaccia grafica). Provalo se è un'opzione.


1

Provare sdiff

diffha anche opzioni ( -eo -ed) per creare uno script di unione da utilizzare coned

sdiff, diffE eddovrebbe essere parte della vostra shell mai dove si va.

Il tuo software di controllo di versione probabilmente ha anche una diffe mergestrumento costruito in.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.