將之前提交過的檔案從版本中刪除
git filter-branch --help
解釋
git-filter-branch - rewrite branches
語法
git filter-branch
[--env-filter ]
[--tree-filter ]
[--index-filter ]
[--parent-filter ]
[--msg-filter ]
[--commit-filter ]
[--subdirectory-filter ]
[--prune-empty]
[--original ]
[-f | --force]
[--]
[…]
示例
git filter-branch
--index-filter
'git rm --cached --ignore-unmatch b.c'
-f
–tree-filter表示歷史提交。
–index-filter
–msg-filter表示修改提交資訊,原提交資訊從標準輸入讀入,新提交資訊輸出到標準輸出。
-f是忽略備份。不加這個選項第二次執行這個命令時會出錯,意思是 git 上次做了備份,現在再要執行的話得處理掉上次的備份。
$ du -hs
雖然原檔案已經刪除了,但檢視檔案大小還是包括刪除的檔案,
執行以下git語句則節省大小
git ls-remote
. rm -rf
.git/logs
git reflog --
all
git prune
git gc
du -hs
在window 命令列行執行有問題,建議在bash.exe中執行,
不要開啟多個bash,會出現沒許可權的問題
cd demo
#bash.exe
#git filter-branch
--index-filter
'git rm --cached --ignore-unmatch demo2.txt'
-f#git filter-branch
--tree-filter
'git rm --cached --ignore-unmatch demo2.txt'
-fgit ls-remote
. rm -rf
.git/logs
git reflog --
all
git prune
git gc
du -hs
參考 git刪除所有歷史提交記錄
把舊專案提交到git上,但是會有一些歷史記錄,這些歷史記錄中可能會有專案密碼等敏感資訊。如何刪除這些歷史記錄,形成乙個全新的倉庫,並且保持 不變呢?1.checkout git checkout orphan latest branch 2.add all the files git add a 3...
從Git版本控制中刪除檔案
參考 如果你想把乙個檔案從版本控制中移除,並且保留本地的檔案,首先需要把這個檔案加入到gitignore檔案中。然後執行以下命令就可以了。git rmfile path cached以上命令將file path所代表的檔案從版本控制中刪除,並保留本地檔案,此外還要進行commit操作才能將伺服器端的...
git刪除所有提交歷史記錄
以下方法是在當前的分支下新建乙個分支,然後把之前分支刪除,接著把新建的分支重新命名為原分支名稱,最後把分支強制推送到遠端 1.checkout git checkout orphan latest branch 2.add all the files git add a 3.commit the c...