本文主要是介绍git diff 左侧显示行号(格式化输出),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1、问题描述
- 2、环境
- 3、效果
- 4、实现
1、问题描述
我用git diff
命令查看代码做了哪些修改时,发现显示的排版不符合我的预期,我希望能在排版左边显示删改的具体行号,且不同的文件的修改分隔开。
2、环境
- 操作系统:Ubuntu 18.04.5 LTS
- Git版本:git version 2.17.1
3、效果
我写了一个git-diff-lines命令,代替git diff命令,先看对比效果
git-diff-lines命令比起git diff命令排版上的优点:可在界面左侧显示具体修改了哪个文件的哪一行,视觉上更直观,且只显示添加/删除/修改的行,而不显示周围的上下文
4、实现
写一个格式化git diff输出的脚本git-diff-lines
,并将脚本添加到环境变量里去,查看本机环境变量的路径用echo $PATH
命令
wangtao@DESKTOP-1D526UH:~/work$ vim git-diff-lines
#!/bin/bash
diff-lines() {local path=local pathOld=local line=while read; doesc=$'\033'if [[ $REPLY =~ ---\ (a/)?.* ]]; thencontinueelif [[ $REPLY =~ \+\+\+\ (b/)?([^[:blank:]$esc]+).* ]]; thenpath=${BASH_REMATCH[2]} #获取文件路径elif [[ $REPLY =~ @@\ -[0-9]+(,[0-9]+)?\ \+([0-9]+)(,[0-9]+)?\ @@.* ]]; thenline=${BASH_REMATCH[2]} #获取添加/删除/修改的行elif [[ $REPLY =~ ^($esc\[[0-9;]+m)*([\ +-]) ]]; thenif [ "$path" != "$pathOld" ]; thenecho -e "\n\n$path:$line:$REPLY" #不同文件间的修改用换行隔开elseecho "$path:$line:$REPLY"fiif [[ ${BASH_REMATCH[2]} != - ]]; then((line++))fipathOld=$pathfidone
}if [ "$1" != "" ]; then #可查看单个文件的差异(方法:git-diff-lines xxx.c)git diff -U0 --color=always -- "$1" | diff-lines
elsegit diff -U0 --color=always | diff-lines
fi
wangtao@DESKTOP-1D526UH:~/work$ chmod a+x git-diff-lines
wangtao@DESKTOP-1D526UH:~/work$ sudo cp git-diff-lines /usr/local/sbin
以后在代码工程任何目录下敲git-diff-lines
命令,就能格式化输出代码修改差异啦!
参考
[1]: https://cloud.tencent.com/developer/ask/85412
这篇关于git diff 左侧显示行号(格式化输出)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!