簡體   English   中英

如何從git repo中刪除以前提交的文件?

[英]how to remove previously committed file from git repo?

我不小心提交了一個大型zip文件,然后將其推送到bitbucket。

現在,我已經將文件添加到.gitignore並使用git rm --cached刪除了它並提交了文件的刪除。

但是當我git checkout之前的提交時,大的zip文件仍然存在。 意味着它仍在git repo中。

如何完全刪除此大zip文件?

提前致謝。

因為在包含大型二進制文件的提交之上只有一個提交,所以您可以避免交互式的變基。

首先,核對您刪除大型二進制文件所做的第二個提交:

git reset --hard HEAD~1

這使您完全處於剛提交大型二進制文件時的狀態。

現在,此時大的二進制文件應再次出現在本地。 刪除此文件,然后如果Git尚未為您完成該更改,則將該更改添加到索引中。

最后,通過以下方式修改錯誤的提交:

git commit --amend

要將這個分支推送到Bitbucket,您將不得不強制推送,因為您重寫了歷史記錄:

git push --force origin feature

請記住,強制推送會重寫遠程歷史記錄,這可能會給共享此分支的其他任何人造成問題。 在您的情況下,執行此操作的好處可能會超過擁有巨大二進制文件作為您歷史記錄的一部分的優勢。

最安全且可能最干凈的方法是交互式地重新設置基准。

git rebase -i HEAD^^

要么,

git rebase -i your-commit-no^

從那里您可以壓縮提交,這會將一個或多個提交放到上一個提交中。 要從歷史記錄中完全刪除提交,請從列表中刪除該行。

您可以使用以下方式還原提交

git revert 

但它會向歷史記錄中添加更多提交消息,這可能是不可取的。 使用-n參數告訴Git不要立即提交還原。 您可以交互地重新設置基礎,並在上一次提交前將其壓扁,以保持環境清潔。

如果您在此處使用的兩個提交影響相同的文件,則可能會看到合並沖突。

用以下方式重置存儲庫

git reset --hard 

應謹慎處理,因為無法撤消。

重寫歷史記錄時應格外小心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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