zoukankan      html  css  js  c++  java
  • 有了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进行代替,体验真的不太一样,强烈推荐一下。

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

  • 相关阅读:
    LeetCode120 Triangle
    LeetCode119 Pascal's Triangle II
    LeetCode118 Pascal's Triangle
    LeetCode115 Distinct Subsequences
    LeetCode114 Flatten Binary Tree to Linked List
    LeetCode113 Path Sum II
    LeetCode112 Path Sum
    LeetCode111 Minimum Depth of Binary Tree
    Windows下搭建PHP开发环境-WEB服务器
    如何发布可用于azure的镜像文件
  • 原文地址:https://www.cnblogs.com/techflow/p/14137506.html
Copyright © 2011-2022 走看看