我最近提取從共享git倉庫的幾個子目錄裏
git filter-branch --subdirectory-filter foodir -- --all
什麼是git的過濾分支--index過濾後的克隆庫的影響「git的RM ......」
現在我有子目錄仍然留在中央共享存儲庫,我想刪除它們。據我所知,從搜索網絡類似
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
應該用於從歷史中刪除舊目錄。
儘管我相信這樣做會有效,但我現在想知道這是否是在共享存儲庫的情況下從歷史記錄中刪除某些內容的最佳方式,因爲我知道每個使用本地克隆的人都必須重新-clone存儲庫?
所以我最終的問題是,我是對這些假設還是有辦法從歷史中的多個分支中刪除目錄,而不必再次克隆存儲庫?
UPDATE
所以我進行了一些測試和當前與此命令運行: git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch -- Dir1 DIR2' --prune-empty --tag-name-filter cat -- --all
其作品,但它也完全改變了所有提交所有SHA-1的密鑰,這是可以理解的,但不理想。這意味着每個人都必須重新克隆存儲庫,並通過Gitweb的所有以前的鏈接將打破。
我們現在已經決定只刪除目錄中的文件並提交這些刪除操作,但在歷史記錄的其餘部分中刪除這些文件並不是一個安全問題。但是,如果有人有更好的主意,請仍然回答 – AGrunewald 2010-12-13 16:40:40