1. 程式人生 > >怎樣快速找到某一行程式碼的git提交記錄

怎樣快速找到某一行程式碼的git提交記錄

利用notepad++提高問題分析效率,以及快速找到某一行程式碼的git提交記錄

1. 全目錄搜尋/替換

        Notepad++是一款強大的文字編輯工具,當知道大概的關鍵詞但不知道在哪個日誌時可以使用notepad++的檔案搜尋功能,在整個目錄及其子目錄的檔案中嘗試搜尋。

        如某客戶機房出現FC網路不穩定,需要分析交換機日誌排查出問題的埠;但是交換機是其他廠商的裝置,日誌解壓後有上百個檔案。我們並不清楚每個檔案的內容,此時就可以利用檔案搜尋功能在整個目錄下搜尋link up,link down,connect,disconnect等疑似關鍵詞,根據查詢結果進一步分析。

         具體方法如下:點選“搜尋>在檔案中查詢”,在彈出的對話方塊中填入關鍵詞、搜尋目錄、檔案型別*.*(全部檔案型別),勾選當前資料夾、包含子目錄,點選全部查詢即可。

 

 

 

        2.多個關鍵詞同時查詢

        分析日誌時通常需要搜尋多個關鍵詞,再在搜到的文字行前新增“///”等識別符號將日誌標記出來,標記完成後再搜尋識別符號列出問題相關日誌進行分析。

        利用notepad++的正則表示式搜尋功能可以同時搜尋多個關鍵詞,使用方法與上圖相同,只需要在“查詢模式”中勾選正則表示式,“查詢目標”中填入要搜尋的多個關鍵詞“(keyword1)|(keyword2)”,點選搜尋即可搜出文字中包含keyword1或者keyword2的文字行。

        示例文字及搜尋結果如下所示: 

 

        正則表示式的進一步瞭解可參照:http://blog.jobbole.com/63398/

 

        3.notepad++配合git快速查詢某處修改對應的提交記錄

        開發過程中經常需要了解某個特定的變數歷史上做了哪些改動,以及改動的原因、時間、修改人等資訊。但是檢視git log的最小粒度為檔案,如果變數所在的檔案的其他內容修改次數較多,就需要每次執行一條“git show <commit_id>”命令,再到命令結果輸出中檢視是否有我們關注的變數。利用notepad++配合git,即使有上千次提交也可以快速查詢修改記錄。

        示例如下:

        1.執行命令” git log <path/file>  >gitlogresult”將某個檔案的commit log重定向到檔案gitlogresult中; 

 

        2.利用正則表示式”^commit”搜尋,過濾出以commit開頭的包含commit id的行; 

        3.利用正則表示式進行替換,”()”表示捕獲。

        將上圖中的每一行分為三部分:第一部分 “commit ”,第二部分為commit id的前8個字元(.表示任意字元,{8}表示重複8次),第三部分為commit id的剩餘部分(*表示任意個字元)。

         替換為“\2”表示替換為第二次捕獲,即commit id的前8個字元。

        替換結果為:

 

        4.再次利用正則表示式處理上圖,將(.*)替換為echo "git show \1” >>borrowinglog\ngit show \1 >>borrowinglog

        替換後的結果如下圖所示:

 

         5.步驟4的處理結果中,每兩行命令的含義分別為:將要執行的命令重定向到borrowinglog檔案中和將命令的執行結果重定向到borrowinglog檔案中。也就是說在borrowinglog檔案中包含了所有執行的命令以及命令的執行結果,再利用多關鍵詞匹配正則表示式”(git show)|(某行程式碼)”搜尋就可以快速找到一行程式碼的修改歷史及對應的commit log、修改人等資訊。