2017-05-17 189 views
0

我正試圖找到一個在某個時間點被刪除的函數。我試圖用git log -L :<funcname>:<file>找到被刪除的功能。結果結果是fatal: -L parameter '<funcname>' starting at line 1: no matchGit如何查看功能的更改歷史記錄/刪除?

例如,如果我正在尋找功能findMe

我進入git log -L :findMe:index.php

index.php

<?php 
class stuff {.....} 
class otherStuff{....} 
class moreStuff{ 
    public function test(){...} 
    public function findMe() {....} 
    public function test1() {....} 
} 
?> 

結果fatal: -L parameter '<funcname>' starting at line 1: no match

git log參考:

-L:< funcname的>:<文件>

如果「:<funcname>」代替<start><end>給出,它是一個正則表達式表示從範圍第一個匹配<funcname>的funcname行,直到下一個funcname行。 「:<funcname>」從以前的-L範圍末尾開始搜索,如果有的話,從文件開頭開始搜索。 「^:<funcname>」從文件開始搜索。

回答

0

-L只能找到存在於所顯示文件版本中的東西。

(你引用的錯誤信息提示,你傳遞文本字符串<funcname>你的指揮,而不是字符串findMe。但是,如果findMeindex.php當前或指定的版本不再存在,-L不會反正能找到它。)

要找到改變出現的字符串或正則表達式的的數量提交,或影響匹配字符串或正則表達式行,使用git log -Sgit log -G。請注意,-S默認採用字符串,而-G採用正則表達式(始終)。要使-S搜索正則表達式而不是簡單字符串,請添加--pickaxe-regex。您可以將這些搜索限制到特定路徑(儘可能多的路徑名稱,比如-L,其中必須正好搜索一個文件)。

因此,如果使用findMeindex.php存在,但現在沒有了在index.php存在,命令:

git log -S findMe --full-history -- index.php 

會發現所有的承諾,改變這一點,因爲它會從一個或多個出現在index.php去在index.php中發生的次數爲零。但請注意,添加路徑名稱index.php會啓用歷史簡化。使用--full-history可以禁用此簡化,以便您可以找到所有提交將其刪除,而不僅僅是某些提交(如果通過合併刪除有時會失敗)。

相關問題