2010-07-07 102 views
86

我的倉庫進行了修改,如:爲什麼「git log-foo」爲刪除的文件foo工作?

  1. ...一些無關的承諾...
  2. 提交新的文件foo與100線的內容
  3. ...中介承諾,其中一些觸及foo ...
  4. 插入的foo在現有文件bargit rm foo在其頂部的內容提交
  5. ...更多不相關的承諾...

現在我想查看已刪除文件foo的日誌。我讀過的所有東西,包括SO,都說我應該能夠git log -- foo,但是這個命令沒有輸出。

如果我發現包括刪除foo的提交,我可以git log 1234abcd -- foo,看到它的日誌,所以我認爲我的路徑foo不是問題。還請注意git merge-base HEAD 1234abcd輸出1234abcd[...],所以我認爲應該證明可以從HEAD提交提交。請注意,我的工作樹中沒有文件foo(很明顯,因爲它已被刪除)。在OS X上使用Git 1.7.1.1。

爲什麼git log -- foo不適合我,我該如何解決?謝謝!

+5

您是否嘗試過'git log --follow - foo'或'git log --follow -M - foo'? (強制重命名檢測) – VonC 2010-07-07 18:05:04

+1

廢話,我確實嘗試了「 - followlow」 - 但是閱讀了「歷史記錄」,我看到自從我試過以後在其他地方進行cd操作,導致路徑無效。當我從正確的起點嘗試時,'git log --follow - foo'有效。我猜Git考慮將'foo'滾動到'bar'作爲某種重命名? 無論如何,謝謝!如果您將其重新發布爲答案,我很樂意將此信任。 – user385804 2010-07-07 18:27:56

+1

令人討厭的是'--'在問題標題中被改爲'-' ... – Cascabel 2010-07-07 18:39:16

回答

117

您想使用git log--follow選項,這是在手冊頁描述:

Continue listing the history of a file beyond renames. 

實際上,這不僅可以讓你看到一個重命名的文件的歷史,但是這也允許您不再在工作樹中查看文件的歷史記錄。所以,你應該用命令應該是這個樣子:

git log --follow -- foo 

更新:

的Git 2.9+已啓用此默認爲所有git diffgit log命令:

結束-user用戶在默認的「git diff」和 「git log」系列中使用瓷級命令啓用重命名檢測;你仍然可以使用「diff.renames」配置變量來禁用它。

感謝x-yuri的高舉!

+0

它對我沒有'--follow'部分。我只需要添加'--'。我正在運行'git-2.9。0'。 – 2016-07-05 13:13:19

相關問題