我需要找到所有git log參考一些帶有擴展名的舊二進制檔案的提交.jar和.class.
我們確實在源代碼中有這些檔案,但現在沒有了!但是,我需要找到所有參考具有該擴展名的檔案的所有提交(例如test.class ,盡管我不知道這些檔案的確切名稱,只知道它們的擴展名)。例如,我需要過濾對擴展名為.class的檔案進行一些修改的提交。我不想根據提交訊息過濾提交。
我試過:
git log --oneline -- '*.class'
與此鏈接相關: 使用 git 查看與子目錄中特定檔案擴展名相關的所有日志
但沒有運氣(沒有結果)
這是我的要求可以實作嗎?非常感謝!
uj5u.com熱心網友回復:
Git 永遠存盤每一個提交(或者只要你能找到它的哈希 ID),每一個提交都永遠存盤每一個檔案。因此,您想要的所有資訊都在存盤庫中,并且您走在正確的軌道上:
git log --oneline -- '*.class'
您在這里遇到的問題是這種git log操作通過過濾掉一些提交來作業。也就是說,git log訪問提交——即歷史——但不會告訴你其中的一些。提交是歷史,如果git log沒有像這樣過濾掉一些,你會得到所有不相關的提交。
到目前為止,沒問題,但是:這種過濾就是 Git 所說的歷史簡化,如果你打開檔案git log并搜索歷史簡化(這個直接鏈接可能會在某個時候停止作業,但目前可以直接使用到它),你會發現這個:
Default mode
將歷史簡化為解釋樹最終狀態的 最簡單歷史。[強調我的]
由于“樹的最終狀態”已洗掉*.class檔案,因此這里通常不會告訴您有關添加和修改檔案的提交。他們走了!你顯然不在乎他們!????git log
幸運的是,您會發現以下內容:
--full-history
與默認模式相同,但不修剪某些歷史記錄。
所以在這里添加--full-history是解決 Git 愚蠢的方法。
您可能還想從所有分支和標簽以及遠程跟蹤名稱(實際上是所有參考)開始,即--all在--. 生成的最終命令是:
git log --oneline --full-history --all -- "*.class"
如果您在 Windows 上使用CMD.EXE,請務必在此處使用雙引號(或不使用引號)。從更明智的 CLI 來看,單引號或雙引號都可以(但不帶引號可能不行,具體取決于細節)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/526282.html
標籤:混帐
