2016-06-11 97 views
1

必須啓動版本控制項目,而不是最初版本控制。因此,如果我們要將回購交易到github(該網站本身現在配對至600mb左右),回購現在是17GB,需要配對。從git repo歷史記錄中刪除所有已刪除的文件w搜索命令

基本上,我們要刪除任何東西,我們從完全回購配對下來的過程中被刪除。我發現了一個很棒的命令來查找每個被刪除的文件。

git log --all --pretty=format: --name-only --diff-filter=D | sort -u 

其中列出了漂亮的文件。

現在我該如何管理這個必要的命令來清除歷史記錄。沿着這些線路的東西。

git filter-branch --tree-filter 'rm -rf { file }' HEAD 

我做了回購的備份副本,所以如果我完全搞砸了事情會沒事的。

這是正確的命令循環所有的文件到?如果是這樣,我該怎麼做?

回答

1

好的,xargs需要一點幫助。我們需要用每行一個,而是代入該過濾器分支命令:

git log --all --pretty=format: --name-only --diff-filter=D | sort -u | while read -r line; do git filter-branch -f --tree-filter "rm -rf { $line }" HEAD; done 

我們還必須指定-f標誌過濾分支刪除舊的裁判,每Purging file from Git repo failed, unable to create new backup

+0

幫助,我在通過第一次提交 [code](警告:Ref'refs/heads/master'沒有更改)後會收到錯誤消息 任何線索? –

+0

沒關係 - 我是這臺服務器上的SUDOer - 不得不在git filter-branch之前添加另一個SUDO。現在似乎工作 - 謝謝你! –

+0

偉大的工作。如果你可以投票回答這個問題,那會給我一些榮譽。謝謝。 – DavidN

相關問題