有了Git这个功能,再也不需要依赖IDE了!
大家好,今天给大家介绍一个隐藏的功能——搜索。
我们在写代码的时候经常遇到的一种情况就是,我们想要知道某一个函数是怎么定义的,这样我们才能知道该如何调用它。如果代码少的话我们当然可以自己人肉查找,但是如果代码量很大的话,人肉查找显然就不行了。如果使用IDE的话,现在的IDE当中当然一般都继承了这个功能,如果你像我一样喜欢编辑器而不喜欢IDE的话,可能就会麻烦一点。
这个时候我们可以使用git grep命令帮助我们找到代码所在的位置。
代码搜索
比如现在我们在一个Python仓库当中,想要知道get_yaml_config这个函数究竟在哪里出现过,这样我们就可以找到它的定义和参数了。
这个时候我们可以在命令行执行:
git grep get_yaml_config
之后我们会进入一个vim界面,当中会展示出这个函数所有出现过的位置。

很明显我们可以知道,其中有def出现的是函数定义的地方,那么我们只需要到这个文件当中去寻找这一行代码就可以了。
这个就是git grep的基础用法,你可能还是会说这依然很不方便啊,虽然帮助我们找到了具体的文件,但是如果这个文件非常大呢,我们不还是要一行一行代码地翻找吗?有没有办法把具体的位置也展示出来呢?
当然是有的,也很简单,我们只需要加上-n这个参数就行了。
git grep -n get_yaml_config

这下我们就发现把行号也带上了。
当然它的功能不止这些,有时候我们只是找到了具体的位置不顶用,我们还会想知道这个发生调用的函数是什么。这我们一样可以做到,也只需要加上一个-p参数就可以了。

看起来结果好像差不多,但是它把每一个调用位置所处的函数都展示出来了。
不仅如此,git grep还可以查找之前某一个版本的代码。如果我们使用IDE的查找工具的话,我们会需要先checkout到之前的版本,然后进行查找,而使用git grep则可以省略这个步骤。
使用的方法也非常简单,我们只需要在最后加上git commitid或者是tag号就可以了。
git grep -n -p get_yaml_config 9caf1ecda6
日志搜索
有时候我们不希望知道这个函数在哪里,而是希望知道它是什么时候加上去的,或者是什么时候产生了变更。这时候我们依然可以使用git,它不仅可以搜索代码还可以搜索日志。
使用的方法也很简单,我们使用git log命令,通过加上参数-L以及:get_yaml_config:generate_create_sql.py。它表示的是搜索generate_create_sql.py这个文件下get_yaml_config这个函数的变更。
git log -L :get_yaml_config:generate_create_sql.py
这样我们得到的结果会是:

它展示出了代码变更的时间,以及对应的commit,甚至还展示出了对应的具体代码以及修改人。可以说是非常非常清晰了,这非常方便我们划定清楚责任,是谁的锅git log看一下就知道了。
刚开始使用估计会不太适应,觉得要敲命令很麻烦,但是用多了之后会发现git查找的速度非常快,而且消耗的内存也少。像是IDE打开了的文件数量多了之后,想要进行查找非常慢,需要等很久,这个时候就可以试试使用git进行代替,体验真的不太一样,强烈推荐一下。
今天的文章就到这里,衷心祝愿大家每天都有所收获。如果还喜欢今天的内容的话,请来一个三连支持吧~(点赞、关注、转发)

有了Git这个功能,再也不需要依赖IDE了!的更多相关文章
- Git是什么、Git的功能、为什么versioncontrol用Git、Git的常用命令、Git的优缺点
Git是什么 git是目前世界上最先进的分布式版本控制系统(没有之一). Git是用于 Linux内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版 ...
- SVN和Git的功能和区别,尚学堂SVN和Git学习视频资料免费下载
对于软件开发人员来说,版本控制系统再熟悉不过了,所谓版本控制系统就是软件项目开发过程中用于储存开发人员所写代码所有修订版本的软件.目前常见的版本控制系统分为集中式版本控制系统(SVN)和分布式版本控制 ...
- git stash功能的使用
一,git stash的作用: 能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录 说明:架构森林是一个专注架构的博客,地址:https://www.cnblogs.com ...
- git: 常用功能等
1. an very useful simple git guide link: http://rogerdudler.github.io/git-guide/index.zh.html
- 如何使用 Android Studio 的 git hub 功能
How to use GitHub with Android Studio This article will explain how to use GitHub with Android Studi ...
- Git:常用功能 - 命令行
1. 正在某个分支进行开发,突然有个紧急BUG需要切换到其他分支进行修复? git add README.md # 将文件添加到暂存区 git stash save "v1.0.0 in d ...
- Git常用功能记录
1. git查看某个文件的修改历史 git log --pretty 然后使用下面的命令可列出文件的所有改动历史,注意,这里着眼于具体的一个文件,而不是git库,如果是库,那改动可多了去了- git ...
- git release功能
命令行: git tag -a v3. -m "这是4.0版本" git push origin v3. //git tag -a 标签名称 -m "说明" / ...
- tortoise git常用功能
1.打tag TortoiseGit -> show log -> 选中版本 -> create tag at this version... TortoiseGit -> p ...
随机推荐
- Java中常见内存溢出模拟及错误分析
在JVM虚拟机规范中,Java虚拟机运行时数据区域除了程序计数器(Program Counter Register)外都有可能出现OutOfMemoryError的情况,使用Hotspot虚拟机简单的 ...
- python学习-pickle模块(序列化)
简介 1 python-pickle模块 该pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. "Pickling"是将Python对象层次结构转换为字节 ...
- MQ消息中间件,面试能问些什么?
MQ消息中间件,面试能问些什么? 为什么使用消息队列?消息队列的优点和缺点? kafka.activemq.rabbitmq.rocketmq都有什么优缺点? 面试官角度分析: (1)你知不知道你们系 ...
- java中对于浮点型数据操作
java的基本数据类型-浮点型:单精度(float)和双精度(double). float:单精度浮点数在机内占4个字节.有效数字8位.表示范围:-3.40E+38 ~ +3.40E+38; doub ...
- Android RFID调试总结
调试了包括驱动,jni层,当然也熟悉了下应用层. 1. 驱动层包括修改: device/eastaeon/aeon6735_65c_l/init.project.rc //去 ...
- 快来,Boom 3D广播功能还能这样用
Boom 3D不仅为用户提供了包括3D立体音效.古典音乐音效在内的多种音效增强功能,而且还为用户提供了广播功能.该广播功能不仅涵盖了国内广播节目,而且还涵盖了国际广播节目. Boom 3D的广播功能还 ...
- css3系列之@font-face
@font-face 这个属性呢,必须设置在 css的根下,也就是说,不能设置在任何元素里面. @font-face: 参数: font-family: 给这个文字库 起个名字. src: url( ...
- C语言讲义——内联函数
如果一些函数被频繁调用,不断地有函数入栈(Stack),会造成栈空间的大量消耗. 对应这种问题,可以使用内联函数(inline). 编译器会将内联函数的代码整段插入到调用的位置. #include & ...
- 三:robot framework常用关键字
该部分介绍的是内置库:Builtin,估不需要导入,即可使用 1.RF中定义一个变量: ${XXX} XXX表示:变量名 *** Settings *** *** Test Cases *** 定 ...
- LinuxKernel(一)
首先,回顾一下基础的宏操作: C语言宏 #与## #的作用是字符串化:在一个宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组 #define ERROR_LOG(info) fprin ...