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数值格式化输出的完全指南

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

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

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

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.