怎样快速找到某一行代码的git提交记录
利用notepad++提高问题分析效率,以及快速找到某一行代码的git提交记录
1. 全目录搜索/替换
Notepad++是一款强大的文本编辑工具,当知道大概的关键词但不知道在哪个日志时可以使用notepad++的文件搜索功能,在整个目录及其子目录的文件中尝试搜索。
如某客户机房出现FC网络不稳定,需要分析交换机日志排查出问题的端口;但是交换机是其他厂商的设备,日志解压后有上百个文件。我们并不清楚每个文件的内容,此时就可以利用文件搜索功能在整个目录下搜索link up,link down,connect,disconnect等疑似关键词,根据查找结果进一步分析。
具体方法如下:点击“搜索>在文件中查找”,在弹出的对话框中填入关键词、搜索目录、文件类型*.*(全部文件类型),勾选当前文件夹、包含子目录,点击全部查找即可。

2.多个关键词同时查找
分析日志时通常需要搜索多个关键词,再在搜到的文本行前添加“///”等标识符将日志标记出来,标记完成后再搜索标识符列出问题相关日志进行分析。
利用notepad++的正则表达式搜索功能可以同时搜索多个关键词,使用方法与上图相同,只需要在“查找模式”中勾选正则表达式,“查找目标”中填入要搜索的多个关键词“(keyword1)|(keyword2)”,点击搜索即可搜出文本中包含keyword1或者keyword2的文本行。
示例文本及搜索结果如下所示:

正则表达式的进一步了解可参照:http://blog.jobbole.com/63398/。
3.notepad++配合git快速查找某处修改对应的提交记录
开发过程中经常需要了解某个特定的变量历史上做了哪些改动,以及改动的原因、时间、修改人等信息。但是查看git log的最小粒度为文件,如果变量所在的文件的其他内容修改次数较多,就需要每次执行一条“git show <commit_id>”命令,再到命令结果输出中查看是否有我们关注的变量。利用notepad++配合git,即使有上千次提交也可以快速查找修改记录。
示例如下:
1.执行命令” git log <path/file> >gitlogresult”将某个文件的commit log重定向到文件gitlogresult中;

2.利用正则表达式”^commit”搜索,过滤出以commit开头的包含commit id的行;

3.利用正则表达式进行替换,”()”表示捕获。
将上图中的每一行分为三部分:第一部分 “commit ”,第二部分为commit id的前8个字符(.表示任意字符,{8}表示重复8次),第三部分为commit id的剩余部分(*表示任意个字符)。
替换为“\2”表示替换为第二次捕获,即commit id的前8个字符。

替换结果为:

4.再次利用正则表达式处理上图,将(.*)替换为echo "git show \1” >>borrowinglog\ngit show \1 >>borrowinglog
替换后的结果如下图所示:

5.步骤4的处理结果中,每两行命令的含义分别为:将要执行的命令重定向到borrowinglog文件中和将命令的执行结果重定向到borrowinglog文件中。也就是说在borrowinglog文件中包含了所有执行的命令以及命令的执行结果,再利用多关键词匹配正则表达式”(git show)|(某行代码)”搜索就可以快速找到一行代码的修改历史及对应的commit log、修改人等信息。
怎样快速找到某一行代码的git提交记录的更多相关文章
- 如何搜索 git 提交记录
如何搜索 git 提交记录 git log -p --all -G '可通过正则搜索' --pretty=format:'%ci' # 可跨分支搜索 # -S '通过文本搜索' git branch ...
- [译] 怎样(以及为什么要)保持你的 Git 提交记录的整洁
最近在掘金翻译了一篇文章,主要讲的是 Git 提交记录的维护,确实很有用,感兴趣的同学可以去看一下.链接如下: [译] 怎样(以及为什么要)保持你的 Git 提交记录的整洁 截图:
- 猿猿有责,维持整洁的 Git 提交记录,三个锦囊送给你
背景 大家都有学习如何规范简洁的编写代码,但却很少学习如何规范简洁的提交代码.现在大家基本上都用 Git 作为源码管理的工具,Git 提供了极大的灵活性,我们按照各种 workflow 来提交/合并 ...
- 恢复到版本并销毁之后的git提交记录
git reset --hard HEAD~1(或者你想要的版本号) git push --force # 千万注意:此操作无法恢复
- [转]git提交代码时遇到代码库有更新以及本地有更新的解决方法
本文转自:https://blog.csdn.net/myphp2012/article/details/80519156 在多人协作开发时,经常碰到同事把最新修改推送到远程库,你在本地也做了修改,这 ...
- 每一行代码都有记录—如何用git一步步探索项目的历史
每一行代码都有一块被隐藏了的文档信息. 下面的代码片段不管是谁写的,其第4行因为某些原因要访问一个DOM结点的clientLeft属性,但却对结果不作任何处理.这十分的莫名其妙,你能告诉我他们为什么要 ...
- 瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!!
瞧一瞧,看一看呐用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在不 ...
- eclipse快速复制一行代码(向下/向上)快捷键修改设置
eclipse快速复制一行代码(向下/向上)快捷键修改设置 2015年10月05日 17:46:57 xiaoguanglgc 阅读数:20906 标签: eclipse快速复制一行快捷键冲突英特尔 ...
- 快速开发框架(FDMS)新增1000个对外接口都不须要手写一行代码
一个大型系统难免会跟其它系统有数据交换,这里就要提供数据接口给外部系统. 曾经在一家智能终端设备的公司上班.那段时间的主要工作就是写接口.接口须要与手机.手持设备.系统管理软件等进行数据交换.总结了一 ...
随机推荐
- STL中排序函数的用法(Qsort,Sort,Stable_sort,Partial_sort,List::sort)
都知道排序很重要,也学了各式各样的排序算法,冒泡.插入.归并等等,但其实在ACM比赛中,只要不是太慢的算法,都可以适用(除非某些题目卡时间卡的很死),这个时候,速度与技巧便成了关键,而在C++的标准库 ...
- 一文轻松搞懂Vuex
概念: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式(官网地址:https://vuex.vuejs.org/zh/).它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状 ...
- 白话系列之IOC,三个类实现简单的Ioc
前言:博客园上已经有很多IOC的博客.而且很多写的很好,达到开源的水平,但是对于很多新人来说,只了解ioc的概念,以及怎么去使用ioc.然后想更进一步去看源码,但是大部分源码都比较困难,当不知道一个框 ...
- Linux 笔记 - 第十七章 Linux LVM 逻辑卷管理器
一.前言 在实际生产中,有时会遇到磁盘分区空间不足的情况,这时候就需要对磁盘进行扩容,普通情况下需要新加一块磁盘,重分区.格式化.数据复制.卸载旧分区.挂载新分区等繁琐的步骤,而且有可能造成数据的丢失 ...
- Qt插件热加载-QPluginLoader实现
上一篇C++消息框架-基于sigslot文章中我们讲述了使用sigslot信号槽实现自己的消息框架,这是一个比较粗糙,而且小的框架.当我们的程序逐渐变大时,我们可能就会考虑功能插件化,或者支持某些模块 ...
- PTA A1009&A1010
第五天 A1009 Product of Polynomials (25 分) 题目内容 This time, you are supposed to find A×B where A and B a ...
- Java中对象创建时的内存分配
一.前言知识铺垫 1.逃逸对象:在一个方法内创建的对象没有被外界引用则称该对象为未逃逸的对象. 2.JDK1.6以后的HotSpot虚拟机支持运行时的对象逃逸分析. 3.JVM中的参数配置: 1) ...
- SoapUI接口测试实战
本次测试的是REST服务,使用的SoapUI破解版,如果担心开源版的会有功能差异,可以参照我之前的博文安装破解版. 博文地址:https://www.cnblogs.com/Sweettesting/ ...
- Java中一维,二维数组的静态和动态初始化
今天我们要开始来讲讲Java中的数组,包括一维数组和二维数组的静态初始化和动态初始化 数组概述: 数组可以看成是多个相同类型数据的组合,对这些数据的统一管理; 数组变量属于引用数据类型,数组也可以看成 ...
- redis-自动补全
自动补全实现方式有两种: 第一种:数据量非常小时,程序从redis中获取数据后,在程序中排序:redis只作为数据存储用: 第二种:数据量较大时,直接在redis中排序,并返回自动补全的数据. 第三种 ...