【Git 学习笔记】gitk 命令与 git log 其他参数的使用

1.7 用 gitk 查看提交历史

# make sure you have gitk installed
$ which gitk
/usr/bin/gitk
# Sync the commit ID
$ git checkout master && git reset --hard 13dcad
# bring up the gitk interface, --all to see everything
$ gitk --all &

实测结果:
在这里插入图片描述


1.8 在历史版本中查找 commit 版本

# look at the entire history and search every commit that has "Performance" in its commit message:
$ git log --grep "Performance" --oneline --all

上述命令查找 Git 库内所有分支、所有提交注释中,包含 Performance 字样的 commit 版本,并单行显示。注意,这里的 --grep 参数是 区分 大小写的。

此外,也可以在 gitk 命令中查找指定关键字,gitk 会自动高亮匹配:

在这里插入图片描述

1.9 在历史版本的代码中搜索信息

有时候,仅仅在提交注释中进行检索并不能满足实际工作需要,比如要定位哪些提交版本改动了某个方法或变量时,就需要借助 git log 的其他参数实现了。

练习:以 JGit 项目为例,找出满足以下条件的所有提交版本信息:

  1. SHA-1 指定为 b14a939
  2. 变更的一行中包含 "isOutdated" 方法
  3. 单行显示结果

执行命令如下:

$ git checkout master && git reset --hard b14a939
$ git log -G "isOutdated" --oneline
c9e4a7855 Add isOutdated method to DirCache
797ebba30 Add support for getting the system wide configuration
4c14b7623 Make lib.Repository abstract and lib.FileRepository its implementation
c9c57d34d Rename Repository 'config' as 'repoConfig'
5c780b387 Fix unit tests using MockSystemReader with user configuation
cc905e7d4 Make Repository.getConfig aware of changed config

参数 -G 实现的是在 文件变更的增量补丁 中查找。只要提交的版本中,某一行代码新增或删除过包含关键词 isOutdated 的情况,就会被检索到。

与之类似的另一个参数是 -S,其唯一区别在于,-S 检索的是指定关键词在某版本中的 出现次数 的变化情况。对比 -S 的执行结果:

$ git checkout master && git reset --hard b14a939
$ git log -S "isOutdated" --oneline
c9e4a7855 Add isOutdated method to DirCache
797ebba30 Add support for getting the system wide configuration
4c14b7623 Make lib.Repository abstract and lib.FileRepository its implementation
5c780b387 Fix unit tests using MockSystemReader with user configuation
cc905e7d4 Make Repository.getConfig aware of changed config

可以看到 commit ID 为 c9c57d34d 仅在 -G 时出现,在 -S 中未曾出现。借助命令 git show 查看该版本详情( grep -C4 会展示目标代码行前后各 4 行的情况):

$ git show c9c57d3 | grep -C4 "isOutdated"
@@ -417,14 +417,14 @@ public FileBasedConfig getConfig() {throw new RuntimeException(e);}}
-               if (config.isOutdated()) {
+               if (repoConfig.isOutdated()) {try {
-                                       loadConfig();
+                                       loadRepoConfig();} catch (IOException e) {

原来是对象的重命名导致的变更,导致这一行出现了关键词,但出现次数并不受影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/40835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么salesforce需要设置社区端,而不是使用和内部员工同样的环境

虽然企业可能希望为客户和合作伙伴提供与内部员工相同的环境,但实际上这样做有几个显著的缺点和风险。这些包括: 安全性和权限管理:内部员工的系统通常包含敏感和机密的信息,例如财务数据、内部策略和未发布的产品信息。将客户和合…

速速来get新妙招!苹果手机护眼模式在哪里开启

在日常生活中,我们经常长时间使用手机,无论是工作还是娱乐,屏幕的蓝光都会对眼睛造成一定的伤害。为了减轻眼睛疲劳,苹果手机推出了护眼模式,也叫“夜览”模式,通过调整屏幕色温,让显示效果更温…

MySQL 8.0 架构 之 中继日志(Relay log)

文章目录 MySQL 8.0 架构 之 中继日志(Relay log)中继日志(Relay log)概述相关参数参考 【声明】文章仅供学习交流,观点代表个人,与任何公司无关。 来源|WaltSQL和数据库技术(ID:SQLplusDB) MySQL 8.0 OCP …

PyTorch - 神经网络基础

神经网络的主要原理包括一组基本元素,即人工神经元或感知器。它包括几个基本输入,例如 x1、x2… xn ,如果总和大于激活电位,则会产生二进制输出。 样本神经元的示意图如下所述。 产生的输出可以被认为是具有激活电位或偏差的加权…

四、(3)补充beautifulsoup、re正则表达式、标签解析

四、(3)补充beautifulsoup、re正则表达式、标签解析 beautifulsoupre正则表达式正则提取标签解析 beautifulsoup 补充关于解析的知识 还需要看爬虫课件 如何定位文本或者标签,是整个爬虫中非常重要的能力 无论find_all(&#xff…

Spring启动时,将SpringContext设置到Util中(SpringContextUtil)

场景 在Spring应用开发中,为简化代码或者在静态方法中获取Spring应用的上下文,需要把SpringContext设置到类属性上。经过对源码的分析和实践,使用Spring的事件监听器监听ApplicationPreparedEvent事件是最佳的方式。 通过ApplicationPrepar…

matrixone集群搭建、启停、高可用扩缩容和连接数据库

1. 部署 Kubernetes 集群 由于 MatrixOne 的分布式部署依赖于 Kubernetes 集群,因此我们需要一个 Kubernetes 集群。本篇文章将指导你通过使用 Kuboard-Spray 的方式搭建一个 Kubernetes 集群。 准备集群环境 对于集群环境,需要做如下准备&#xff1a…

mysql在windows下的安装

一,软件安装 只修改开头的系统盘 二,环境变量配置 找到MySQL安装目录对应的bin目录复制路径粘贴过来 三,cmd

SSL/CA 证书及其相关证书文件解析

在当今数字化的时代,网络安全变得至关重要。SSL(Secure Socket Layer)证书和CA(Certificate Authority)证书作为保护网络通信安全的重要工具,发挥着关键作用。 一、SSL证书 SSL证书是数字证书的一种&…

SSM少儿读者交流系-计算机毕业设计源码20005

摘要 随着信息技术的发展和互联网的普及,少儿读者之间的交流方式发生了革命性的变化。通过使用Java编程语言,可以实现系统的高度灵活性和可扩展性。而SSM框架的采用,可以提供良好的开发结构和代码管理,使系统更加稳定和易于维护。…

同方威视受邀盛装亮相2024长三角快递物流展(杭州)助力行业物畅其流

同方威视技术股份有限公司携安全检测产品和综合解决方案,盛装亮相2024长三角快递物流展(杭州) 展位号:3C馆A07-1 时间:2024年7月8-10日 地址:杭州国际博览中心(浙江省杭州市萧山区奔竞大道35…

【CSAPP】-linklab实验

目录 实验目的与要求 实验原理与内容 实验步骤 实验设备与软件环境 实验过程与结果(可贴图) 实验总结 实验目的与要求 1.了解链接的基本概念和链接过程所要完成的任务。 2.理解ELF目标代码和目标代码文件的基本概念和基本构成 3.了解ELF可重定位目…

STM32F1+HAL库+FreeTOTS学习2——STM32移植FreeRTOS

STM32F1HAL库FreeTOTS学习2——STM32移植FreeRTOS 获取FreeRTOS源码创建工程窥探源码移植 上期我们认识了FreeRTOS,对FreeRTOS有了个初步的认识,这一期我们来上手移植FreeRTOS到STM32上。 获取FreeRTOS源码 进入官网:https://www.freertos.o…

故障转移处理器的工作原理

将故障的sink降级到故障池中,并在池中为它们分配一个冷却器,在重试之前,故障时间会增加,当sink成功发送event后,它将恢复到活跃池中。sink具有与之相关的优先级,数值越大,优先级越高。如果在发送…

Frrouting快速入门——OSPF组网(一)

FRR简介 FRR是FRRouting的简称,是一个开源的路由交换软件套件。其作者源自老牌项目quaga的成员,也可以算是quaga的新版本。 使用时一般查看此文档:https://docs.frrouting.org/projects/dev-guide/en/latest/index.html FRR支持的协议众多…

网络爬虫(一)深度优先爬虫与广度优先爬虫

1. 深度优先爬虫:深度优先爬虫是一种以深度为优先的爬虫算法。它从一个起始点开始,先访问一个链接,然后再访问该链接下的链接,一直深入地访问直到无法再继续深入为止。然后回溯到上一个链接,再继续深入访问下一个未被访…

AOP切面、动态代理

目录 一、用切面做的是怎么声明切面的?(切面是怎么用的?) 二、切点是怎么定义的? 三、说一下面向切面编程? 四、AOP是怎么实现的? 五、说一下动态代理? 一、用切面做的是怎么声明切面…

promise.all和promise.race的区别

Promise.all和Promise.race是JavaScript中Promise API的两个重要方法,它们在处理多个Promise对象时表现出不同的行为。以下是它们之间的主要区别: 1. 功能和行为 Promise.all: 功能:接收一个包含多个Promise的数组&#x…

【leetcode--逆波兰表达式】

今天学逆波兰表达式撰写还顺便复习了一下二叉树的前中后序遍历: 前序遍历:根左右 中序遍历:左根右 后序遍历:左右根 本题两个要点: a.判断字符串中的元素是数字还是字符串 因为Python 中没有一个函数可以判断一个字…

138. 完美数(卡码网周赛第二十四期(23年腾讯音乐笔试真题))

138. 完美数&#xff08;卡码网周赛第二十四期&#xff08;23年腾讯音乐笔试真题&#xff09;&#xff09; 题目描述 小红定义一个数为“完美数”&#xff0c;当且仅当该数仅有一个非零数字。例如 5000, 4, 1, 10, 200 都是完美数。 小红拿到了一个大小为 n&#xff08;2 <…