J'aime le formatage de sortie de git diff
. La couleur et la représentation +
/ -
des changements entre les lignes sont plus faciles à lire que GNU diff.
Je peux exécuter en git diff
utilisant un --no-index
drapeau en dehors d'un dépôt git et cela fonctionne bien. Cependant, il semble manquer l' --exclude
option d'exclusion de fichiers ou de sous-répertoires d'un récursif diff
.
Existe-t-il un moyen d'obtenir le meilleur des deux mondes? (options de couleur et +
/ -
format git diff
et --exclude
option de diff GNU).
J'ai expérimenté colordiff
, mais je préfère toujours le format de sortie degit diff
newtext
dans/etc/colordiff
. Je pense que git utilise le vert?Réponses:
Je ne sais pas comment faire de la couleur mais cela fera le
+/-
plutôt que<
et>
.la source
diff -u file1 file2 | tig
.colordiff
partir de votre référentiel apt / yum / pacman et utilisez-le.colordiff
: docs.aws.amazon.com/AWSEC2/latest/UserGuidecolordiff
, vous pouvez également obtenir de la couleurvim
en définissantcdiff() { diff -u $@ | vim -R -; }
.Vous pouvez également utiliser
git diff --no-index -- A B
(via la page de manuel ).la source
A
etB
diffèrent par rapport à l'autre au lieu de l'endroit où chaque fichier a été modifié par rapport à leur dernière révision respective.git diff --no-index
C'est génial, mais comme le PO l'a souligné, il n'a pas le--exclude
drapeau, donc c'est souvent d'une utilité très limitée.Installez colordiff .
Mettez à jour votre ~ / .colordiffrc (en copiant d'abord / etc / colordiffrc, si nécessaire):
À utiliser
colordiff -u file1 file2
pour deux fichiers oucolordiff -ruN path1 path2
pour comparer récursivement les chemins.Ce n'est pas exactement la même chose, mais c'est très proche.
la source
C'est ce que je suggère et c'est assez proche
colordiff
: Vous devrez installer cecibrew install colordiff
sur mon Mac.port install colordiff
sur certains Mac.sudo apt-get install colordiff
sur Debian ou Ubuntu-R
: cela indique à Less d'afficher les couleurs au lieu des codes bruts.J'ai finalement utilisé
-w
parce que je ne voulais pas voir les différences d'espaces blancs.Edit: Comme suggéré par @Ciprian Tomoiaga dans le commentaire, vous pouvez en faire une fonction et la mettre également dans votre
~/.bashrc
fichier.la source
function gdiff () { diff -u $@ | colordiff | less -R; }
GNU
diff
a une--color
option depuis la version 3.4 fin 2016 selon cette réponse sur Unix SE. Cela-u
devrait suffire à imiter la sortie degit diff
:diff -u --color=always file1 file2 | less -r
--color
doit êtrealways
utilisé dans un tuyau,auto
désactivera la couleur dans les tuyaux.Je n'ai essayé cela qu'avec Git Bash sur Windows, où
less -R
ne colorerait que la première ligne d'un morceau.less -r
corrigé pour moi dans ce cas.la source
En utilisant seulement
bash
,diff
,tput
etless
, nous pouvons suivre de près les sortiegit diff
. Il y aura cependant des différences notables en raison de la myopie desdiff
programmeurs.Placez la définition de fonction Bash suivante dans un fichier qui est automatiquement généré par votre compte d'utilisateur, et vous pourrez accéder à la fonction à partir de la ligne de commande:
Cette fonction fonctionne comme suit:
diff
est appelé avec diverses options de formatage pour spécifier comment les modifications dans les fichiers seront affichées.tput
est utilisé pour insérer des codes de couleur ANSI dans ces options de formatage. Notez que lorsque vous utilisez des terminaux non-ANSI, vous devrez peut-être remplacertput setaf
partput setf
.diff
est redirigée versless
.-R
permet de conserver les couleurs ANSI.-X
empêcheless
de vider l'écran en sortant.-F
empêcheless
de fonctionner comme un téléavertisseur si la sortie tient dans un écran.@full
, la fonction affichera toutes les lignes inchangées en plus des lignes ajoutées et supprimées.Notez les différences suivantes entre cette approche et
git diff
:git diff
rapporte trois lignes de contexte entourant chaque changement. Malheureusement,diff
semble se plaindre et quitter si vous souhaitez spécifier le nombre de lignes de contexte tout en spécifiant simultanément les options de formatage. (Du moins, c'est le cas dans Mac OS X Yosemite). Merci auxdiff
programmeurs. Par conséquent, vous pouvez demander aucune ligne de contexte autour de chaque modification, ce qui est le comportement par défaut, ou vous pouvez demander que toutes les lignes inchangées du fichier soient également signalées, en spécifiant@full
comme premier paramètre.git diff
, les numéros de ligne indiqués par cette fonction varieront également de ceux indiqués pargit diff
.git diff
traite mieux cela, via ses lignes de contexte. Vous pouvez essayer de passer différentes options àdiff
pour mieux gérer les espaces, si vous préférez.la source
Vous recherchez
colordiff
:la source
Placez ceci dans votre
.bashrc
ou.zshrc
:diff() { git diff --no-index "$1" "$2" | colordiff; }
exigences:
git
etcolordiff
doit être installé au préalable.utilisation:
diff file1 file2
exemple: pour $
diff .tmux.conf .zshrc.pre-oh-my-zsh
la source
L'autre option est de le faire depuis l'extérieur du référentiel afin que git sache faire des différences entre les fichiers. par exemple. une fonction shell quelque chose comme:
la source
Utilisez colordiff :
Installation:
Usage:
Donne exactement la même différence que celle indiquée par
git diff
.la source
Si vous n'avez pas
colordiff
ougit diff
, vous pouvez obtenir des couleursvim
.ou simplement
la source
Comme la chauve-souris a une belle coloration, j'ai testé si cela fonctionne
diff
aussi et, étonnamment, cela fonctionnait très bien dès la sortie de la boîte.$ diff file1 file2 | bat
ou$ diff -u file1 file2 | bat
Donc, je suppose que vous pourriez créer une fonction comme celle-ci ci-dessous pour être plus efficace:
la source
Testé dans Debian 9
diff -u --color=always file1 file2
la source
Je pense que le paramétrage de la configuration:
combiné avec l'
--relative=<path>
option de la commande "diff" ferait ce que vous vouliez. As-tu essayé ?la source
git
. Il demandait lesdiff
options du programme