我需要分析整個歷史中給定目錄中的某些文件到底發生了什麼,並且使用像git log the_directory
這樣的東西不夠好。所以我儘管我會創建一個只包含相關文件的分支。git filter-branch困惑
我寫了一個perl腳本remove-all-but-stuff
並驗證它的工作正常。起初,我以爲只是刪除文件會做,但後來我固定它使用
system qw(git rm -r --ignore-unmatch --quiet), @files
其中@files
包含不必要的目錄和文件因爲他們在工作樹中找到 - 可能這是一個問題?
我創建了一個新的分支,並通過
git filter-branch --tree-filter remove-all-but-stuff my-branch
,並在年底的文件都沒有了過濾,但是,這個發生在最後提交。歷史記錄包含對不應存在的文件的更改。
我使用git版本2.3.5。任何想法我做錯了什麼?
現在我甚至加入了一些路徑@files
沒有看看是否存在。有些東西已經改變了(Ref'refs/heads/my-branch'被重寫),但不想要的文件(甚至低於添加的路徑)仍然在歷史中。
我只是在這裏離開這裏:git gui blame somefile.txt提供了一個GUI呈現文件和所有修改的來源。您可以通過單擊與每行相關的提交的散列來瀏覽文件的歷史記錄。這是深入瞭解文件歷史的最佳方法(imo)。 –
@FélixCantournet我的問題是一堆文件和其中的許多變化(只有兩個重命名)。在命令行中指定它們是一件很痛苦的事情,因爲名稱和類似犯罪中有空白的文件。過濾之後我得到的好多了。 – maaartinus