假設我有一個文件夾結構是這樣的一個倉庫:如何`git filter-branch`多個子目錄並保留其父目錄?
|-dir1
|-dir2
| |-subdir1
| |-subdir2
| |-subdir3
|-dir3
我希望我可以簡單地git filter-branch --subdirectory-filter
我的出路,但我似乎遇到兩個難題:
- 它似乎我不能提供多個
--subdirectory-filter
參數?至少它似乎沒有包含我想要的所有子目錄。 - git似乎剝離父目錄。
所以,我該怎麼辦,如果我想我的過濾回購得到這個結果?:
|-dir1
|-dir2
| |-subdir1
| |-subdir3
增加:
正如意見建議,我曾嘗試:
git filter-branch --tree-filter 'rm -rf dir2/subdir2' --prune-empty
但這很慢,所以我對此感到不耐煩。 git help filter-branch
似乎表明,我可以使用的--index-filter
代替--tree-filter
,使其更快,所以我希望我可以簡單地這樣做,而不是:
git filter-branch --index-filter 'rm -rf dir2/subdir2' --prune-empty
然而,儘管它似乎通過我提交合作,並做一些它與消息結束:
警告:REF「裁判/頭/主」是不變的
和「DIR2 /子目錄」,其內容仍是我的工作拷貝。所以我明顯誤解了一些東西。我很好奇--index-filter
可能是正確的方式嗎?
我認爲你需要'git filter-branch --tree-filter'rm -rf dir2/subdir2 dir3 /''。如果需要,加'-f'。 – ElpieKay
@ElpieKay我會試一試 –
@ElpieKay'--tree-filter'需要永久使用,所以我嘗試使用'--index-filter'來代替,因爲各種來源似乎都表明這應該會有相同的效果。但是,儘管重寫提交非常繁忙,但它對我的實際工作副本沒有任何影響,並且也以消息結尾**警告:Ref'refs/heads/master'不變**。我可能做錯了什麼? –