Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I make git add -p show changes like git diff --word-diff?

I have recursively replaced many single word patterns in my code base. Before committing I need to check each for false replacements. It would help me a lot to have git add -p use the format of what --word-diff uses with git diff, where only the changed words are marked and not the entire line.

Someone has asked the same here, but maybe it was implemented since? https://groups.google.com/forum/#!topic/git-users/7uO2OUJGvP0

like image 299
djangonaut Avatar asked May 27 '17 14:05

djangonaut


2 Answers

Since Git 2.9, you can use the property interactive.diffFilter (as I mentioned below this answer)

But, any git -c interactive.diffFilter="git diff --color-words" add -p would generate, since Git 2.17, an error message

fatal: mismatched output from interactive.diffFilter

(as seen in this question)

So using a script for the interactive.diffFilter setting remains a safer way.

like image 142
VonC Avatar answered Oct 29 '22 19:10

VonC


Adding diff-highlight to the interactive.diffFilter config key is the easiest option (since Git 2.9). The following comand does the trick on Debian/Ubuntu:

git config interactive.diffFilter "perl /usr/share/doc/git/contrib/diff-highlight/diff-highlight"

Things like git -c interactive.diffFilter="git diff --color-words" add -p or git config interactive.diffFilter "git diff --color-words" don't work properly: add -p always keeps suggesting the first modified file.

like image 2
sgtpep Avatar answered Oct 29 '22 17:10

sgtpep