有了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 ...
随机推荐
- Linux(CentOS6.8)配置ActiveMQ
1.下载ActiveMQ http://activemq.apache.org/ 注:若是想下载老版本的ActiveMQ可以通过以下链接下载 http://activemq.apache.org/do ...
- 查看 /var/log目录下文件个数 命令tree 、cut
查看 /var/log目录下文件个数 方法1. [root@oldboy learn_shell]# tree -L 1 /var/log/ |tail -1 5 directories, 42 fi ...
- 给力啊!这篇Spring Bean的依赖注入方式笔记总结真的到位,没见过写的这么细的
1. Bean的依赖注入概念 依赖注入(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现.在编写程序时,通过控制反转,把对象的创建交给了 Spring,但是 ...
- PowerPoint无法正常加载MathType的解决方法
MathType是一款十分便捷的数学公式编辑器,可以和很多办公软件和网站兼容使用,我们日常用的比较多的也就是Office和WPS,更具体的说是Word\Excel\PPT等等一系列办公常用软件. 不过 ...
- 微课制作软件Camtasia中如何添加并编辑字幕?
除了能录制视频以外,Camtasia还能直接把录制下来的视频进行剪辑,并添加视频字幕等等一些后期效果.今天我们就来看一看字幕的添加方法. 导入视频 微课制作软件Camtasia录制的视频,默认在软件& ...
- guitar pro 系列教程(十一):Guitar Pro菜单工具之MIDI效果的提升
对于新手的一些朋友,看谱,编曲时使用Guitar Pro时,因为对其功能不是很了解而显得困难重重,导致出现的音频效果不是很理想,因此,小编今天要做的便是,单独把Guitar Pro里的MIDI效果如果 ...
- JVM(二)-内存区域之线程私有区
概述: 对于从事C.C++开发的程序员来说,在内存管理领域,他们既是拥有最高权力的"皇帝",又是从事最基础工作的劳动人民--既拥有每个对象的"所有权", 又担负 ...
- Robot Framework安装和入门
1:安装 python 安装python并且配置好环境变量 2:安装 Robot Framework pip install robotframework 3:安装GUI界面 pip install ...
- 他是 ISIJ 第四名,也是在线知名题库的洛谷“网红”
转载自加藤惠. 2020年国际初中生信息学竞赛(ISIJ)上,以优秀成绩拿下第四名年仅初三的张湫阳,成为最夺目的选手之一. 而且虽然是初三的选手,但他取得优异成绩后,不少网友并不感到陌生,纷纷留言: ...
- Codeforces Round #667 (Div. 3) B、C、D、E 题解
抱歉B.C题咕了这么久 B. Minimum Product #枚举 #贪心 题目链接 题意 给定四个整数\(a, b, x, y\),其中\(a\geq x, b\geq y\),你可以执行不超过\ ...