簡體   English   中英

Git 從所有提交中刪除文件

[英]Git remove file from all commits

我犯了一個“小”錯誤,並在我的本地存儲庫中添加了一個“小”(> 100MB)文件。

兩次提交后,我試圖推送到 github 中限制為 100MB 的遠程回購。

我可以使用git rm --cached從我當前的提交中刪除文件,但它仍然在以前的提交中。

如何從所有提交中刪除文件? 我已經嘗試過這個關於 git filter-branch 的答案,但不適用於我的。

我會軟復位3個最新的提交。 然后刪除“小”文件。 然后將所有更改變為1個新提交。

我覺得這不是很理想,但解決了問題,因為你還沒有做太多額外的提交。

您可以通過交互式rebase更改最后3次提交。

git rebase -i HEAD~3

並將提交更改為“編輯”。

請參閱https://help.github.com/articles/about-git-rebase/

關於觀察:

我已經嘗試過這個關於 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM