How can I use `git diff --color-words` outside a Git repository?
Solution 1
git diff --color-words --no-index old.txt new.txt
Solution 2
According to a comment from Jefromi you can just use
git diff --color-words file1 file2
outside of git repositories too.
Solution 3
Git version 1.9.1:
git diff --word-diff=color fileA fileB
Solution 4
you can say git diff --color=always --color-words
, which will give you the color escape codes in the output. you are going to have some shell to interpret the color codes though …
Solution 5
If I'm inside a git repository (git v2.3.3) :
-
git diff --color-words
doesn't work (no output) -
git diff --no-index
doesn't accept--color-words
nor--color
arguments
Using wdiff is possible, configured to use colors, rather than underlined :
wdiff -n \
-w $'\033[30;31m' -x $'\033[0m' \
-y $'\033[30;32m' -z $'\033[0m' \
… | less -R
Source : https://www.gnu.org/software/wdiff/manual/html_node/wdiff-Examples.html (modified to use foreground colors rather than background colors)
Hope it helps.
Vi.
Updated on July 05, 2022Comments
-
Vi. almost 2 years
How can I get output like in
git diff --color-words
, but outside Git?Closest thing is
wdiff -t
, but it underlines/inverts things instead of using green/red colours and does not allow specifying my whitespace regex. -
Vi. about 13 yearsThe question was about using it outside Git repository. Also it misses some things when
--color-words=always
instead of just--color-words
. -
Cascabel about 13 yearsFrom the manpage: "If exactly two paths are given and at least one points outside the current repository, git diff will compare the two files / directories. This behavior can be forced by --no-index." (A lot of times you don't even need
--no-index
.) -
knittl about 13 years@vi: sorry, you only said »outside git«, it did not mention a repository anywhere. i thought it was about having the color in other applications beside git (when e.g. piped) – which is also »outside git«, in the sense of »not inside the default git toolchain/tool collection«
-
Manu Manjunath over 11 yearsgit diff didn't work on two arbit files as mentioned above. (git version 1.7.4). Although,
git diff --color-words --no-index <file1> <file2>
works, correct approach would be to use wdiff, which is intended for that purpose (gnu.org/software/wdiff) -
Zenexer over 10 years@Manu No,
git diff
is intended for this purpose.wdiff
is just a hack. Read your link sometime. -
PhML almost 10 yearsAt least in my git 1.9.3, the order should be
git diff --no-index --color-words
-
Vi. almost 10 yearsIn my git v1.9.3 order of
--no-index
and--color-words
does not matter... (Actually I can't find a case now where it fails without--no-index
at all). -
Vi. about 9 yearsWhy
git --no-index --color-words
fails? I used it (with earlier Git versions although). -
Penghe Geng over 5 yearsWorks great. Maybe we can add an alias
alias diff="git diff --no-index"
? -
Joshua Goldberg over 4 years
git diff
is excellent, but thewdiff
page noted above does not say that it's a hack. wdiff "is quite mature" according to its own documentation linked from that page: gnu.org/software/wdiff/manual/wdiff.html