写点什么

有了 Git 这个功能,再也不需要依赖 IDE 了!

用户头像
云流
关注
发布于: 2020 年 12 月 15 日

大家好,今天给大家介绍一个隐藏的功能——搜索


我们在写代码的时候经常遇到的一种情况就是,我们想要知道某一个函数是怎么定义的,这样我们才能知道该如何调用它。如果代码少的话我们当然可以自己人肉查找,但是如果代码量很大的话,人肉查找显然就不行了。如果使用 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 进行代替,体验真的不太一样,强烈推荐一下。


今天的文章就到这里,衷心祝愿大家每天都有所收获。如果还喜欢今天的内容的话,请来一个三连支持吧~(点赞、关注、转发


转载:https://www.cnblogs.com/techflow/p/14137506.html

用户头像

云流

关注

还未添加个人签名 2020.09.02 加入

还未添加个人简介

评论

发布
暂无评论
有了Git这个功能,再也不需要依赖IDE了!