git --color-words post
[homepage.git] / blog / posts / 2010 / 01 / git_flag_of_the_day_--color-words.mdwn
1 # the ultimate text diffing helper
2
3 I use [Git](http://git-scm.com) not only for code, but also for text, my most
4 common use case being co-authorship of scientific **papers typeset in LaTeX**.
5
6 While **reviewing other author changes**, the usual line-by-line diff is often
7 annoying since:
8
9 1. Paragraph re-formatting gets in the way (hello guys accustomed to compulsory
10    Vim's `gq` or Emacs' `M-q`): it does not effect the final rendering, but it
11    still hinders peer-review of changes.
12
13 2. Even in the simplest case of a single word change on a single line, it will
14    take some time for your eyes to spot where, along the line, the actual
15    change is.
16
17 Stuff like [[!debpkgsid wdiff]] does help, but I've never looked at how to
18 integrate it with Git, and I still find it a pain in the eyes due to the fancy
19 ASCII arts used to denote additions and deletions (pain that I usually
20 experience when looking at the output of `debdiff`). There are nice diffing
21 GUIs or editor-integrated solutions out there, but what I've always dreamed of
22 is a plain old cmdline geekism.
23
24 Enter Git's `--color-words`, that can be passed to both `show` and `diff`
25 commands. My favorite related [Git aliases](http://git.or.cz/gitwiki/Aliases)
26 are as follows:
27
28         [alias]
29                 wdiff = diff --color-words
30                 wshow = show --color-words
31
32 Here is a sample fancy output, yet very intuitive and console-based, of `git
33 show --color-words` (text in red denotes deletions, text in green additions):
34
35 [[!img wshow.png alt="sample output of git show --color-words (screenshot)" size="x300"]]
36
37 Maybe not new to you, but it has been **life-changing** for me.
38
39 [[!tag lang/english planet-debian git tex]]