git diff 左侧显示行号(格式化输出)

2024-03-11 23:48

本文主要是介绍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 左侧显示行号(格式化输出)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799472

相关文章

基于Python编写一个git自动上传的脚本(打包成exe)

《基于Python编写一个git自动上传的脚本(打包成exe)》这篇文章主要为大家详细介绍了如何基于Python编写一个git自动上传的脚本并打包成exe,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录前言效果如下源码实现利用pyinstaller打包成exe利用ResourceHacker修改e

利用c++判断水仙花数并输出示例代码

《利用c++判断水仙花数并输出示例代码》水仙花数是指一个三位数,其各位数字的立方和恰好等于该数本身,:本文主要介绍利用c++判断水仙花数并输出的相关资料,文中通过代码介绍的非常详细,需要的朋友可以... 以下是使用C++实现的相同逻辑代码:#include <IOStream>#include <vec

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

VS Code中的Python代码格式化插件示例讲解

《VSCode中的Python代码格式化插件示例讲解》在Java开发过程中,代码的规范性和可读性至关重要,一个团队中如果每个开发者的代码风格各异,会给代码的维护、审查和协作带来极大的困难,这篇文章主... 目录前言如何安装与配置使用建议与技巧如何选择总结前言在 VS Code 中,有几款非常出色的 pyt

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、