2013-09-26 156 views
1

我有一個包含近千個文件的代碼庫。我正在本地分公司工作,但未做任何更改。今天早些時候,我給一個文件添加了一條error_log聲明,該文件返回了非常有用的信息。我認爲我已經完成了它,所以刪除了日誌,就git而言,將文件返回到它的「不變」狀態。我需要重新輸入日誌,但不能記住我的生活是屬於哪個文件或功能的。Git - 查看已更改的文件,即使已刪除更改

是否有任何git命令可以顯示已更改的文件列表,即使這些更改已被刪除?

+0

[Git recover uncommitted changes](http://stackoverflow.com/questions/3240436/git-recover-uncommitted-changes)可能的重複。到達那裏的不同方式,但不幸的是git不能告訴你。 [經常提交](http://en.wikibooks。組織/維基/ Commit_Often,_Perfect_Later,_Publish_Once:_Git_Best_Practices/Commiting_early_and_often)! – cmbuckley

回答

4

我不認爲有辦法在git中這樣做,但我會按照它們被修改的順序遞歸列出文件。所以在Linux下,你應該能夠做到像

ls -ltrR

你也許可以找到該文件這種方式。哪個比沒有好。

+0

謝謝。不幸的是,我們在Windows上,而不是在Linux上。並且這些文件不在一個文件夾中;有很多子文件夾,所以我不能僅僅通過修改日期對整個代碼庫進行排序。 – EmmyS

+1

@EmmyS這種方法也適用於Windows。 Windows資源管理器允許您搜索文件(包括子目錄),併爲您提供找到的所有內容的一個大列表。在該窗口中,您仍然可以按修改時間進行排序。 – hvd

-1

未提交的更改是總是不好。您應該始終以小​​步驟工作,並在完成每個步驟後提交。 - 提交只是本地的,可以稍後在沒有任何問題的情況下被壓縮。

通過小的承諾步驟,您可以隨時回到每一步。 - 沒有任何提交git不能幫助你恢復更改。

因此,你必須看看外面的混帳。就像文件系統的時間戳或者編輯器的某些日誌一樣。

+0

感謝您的演講。這實際上並沒有回答這個問題,這不是一個問題。我的提交很好。當我沒有解決任何問題時,我沒有看到這一點。 – EmmyS

+0

您要求提供git命令。 - 家庭真相是:沒有。 (git只是不知道你的改變,除非你提交它們。) – michas

+0

然後你所要做的就是添加一個評論,說沒有git命令。你的「答案」不是答案。 – EmmyS

0

如果您在任何時間點將error_log行歸入您的回購行,那麼該行的存在依然存在於您的歷史記錄中,您可以通過多種不同方式恢復它。最直接的就是簡單地使用補丁輸出在git log,並假設輸出被傳遞到less尋呼機,你則只需點擊/,並輸入一個正則表達式該行:

git log -p 
# While in `less` 
/error_log 

然後,您可以通過點擊n前進到下一個匹配,或N返回最後一個搜索輸出的正則表達式。

另一種方法來找到該行的存在(假設它承諾)是使用-S-G選項git log。前者搜索添加或使用固定字符串文本的缺失,而後者也使用正則表達式:

# Fixed string 
git log --name-status -S "error_log" 

# Regex 
git log --name-status -G "error_log" 

輸出將是要麼有error_log在添加或移除這些字符串的文件列表某個時間點。