[英]How to remove all occurences of a file in index, from all git commits
[英]Git remove file from all commits
我犯了一個“小”錯誤,並在我的本地存儲庫中添加了一個“小”(> 100MB)文件。
兩次提交后,我試圖推送到 github 中限制為 100MB 的遠程回購。
我可以使用git rm --cached
從我當前的提交中刪除文件,但它仍然在以前的提交中。
如何從所有提交中刪除文件? 我已經嘗試過這個關於 git filter-branch 的答案,但不適用於我的。
我會軟復位3個最新的提交。 然后刪除“小”文件。 然后將所有更改變為1個新提交。
我覺得這不是很理想,但解決了問題,因為你還沒有做太多額外的提交。
您可以通過交互式rebase更改最后3次提交。
git rebase -i HEAD~3
並將提交更改為“編輯”。
關於觀察:
我已經嘗試過這個關於 git filter-branch 的答案,但不適用於我的。
有關鏈接答案為何不起作用的更多詳細信息將很有用。 撇開這一點不談,我已經多次成功地使用下面的代碼來實現相同的目標:
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch <your-file>" \
--prune-empty --tag-name-filter cat -- --all
此命令與 OP 鏈接的答案中討論的內容大致相似。 為清楚起見,值得補充的是,在從存儲庫中刪除敏感數據GitHub 幫助文章1中討論了此命令。
1文章似乎已經移動,所以我鏈接了archive.is 頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.