问题
My question is rather simple, though I have had no luck finding an answer.
I'd like to remove the leading plus/minus symbols from each line in git diff
. Before you ask why I wish to do this, allow me to outline my reasons:
- Lines that are exactly 80 chars will overflow by a single character, which just looks plain awkward
- The coloring is enough for me to distinguish between additions/deletions
- I'd prefer to keep my Terminal's window width at 80 chars (as opposed to an arbitrary 81 chars) to maintain consistency with everything else I do in my Terminal (outside of
git
)
Is there some config option for doing this? If not, how can I do this in a way that still allows me to page through my diff less
-style?
Any insight would be greatly appreciated.
回答1:
One option is to use sed
to remove the undesired character from diff, while preserving the color:
git diff --color | sed -r "s/^([^-+ ]*)[-+ ]/\\1/" | less -r
(Note that you need to remove the leading space as well, as it is emitted by diff.)
回答2:
The simple way I have seen is this.. Much easy to remember (The text format changes. So you need to know the code change)
git diff --color-words
Here is a way to make it default
If you are using linux add the following command to your ~/.bashrc file
Then you can use gitdiff without space as another command .
alias gitdiff='git diff --color-words'
回答3:
For mac users you'll have to use the below command:
git diff --color | sed -E "s/^([^-+ ]*)[-+ ]/\\1/" | less -r
caleb531 provided it in the accepted answer but there was a small typo.
Then if you want to throw this in an alias you can do the following:
alias gitdiff='git diff --color | sed -E "s/^([^-+ ]*)[-+ ]/\\1/" | less -r'
回答4:
If I may answer my own question, I ultimately settled on using a tool called diff-so-fancy. It not only strips the +/- from my diffs, but it also streamlines the file headers and highlights the changes within each line.
来源:https://stackoverflow.com/questions/28551556/git-remove-leading-plus-minus-from-lines-in-diff