有了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進行代替,體驗真的不太一樣,強烈推薦一下。

今天的文章就到這裏,衷心祝願大家每天都有所收穫。如果還喜歡今天的內容的話,請來一個三連支持吧~(點贊、關注、轉發

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章