簡體   English   中英

推送后刪除git遠程上的二進制文件

[英]remove binary file on git remote after push

如何擦除遠程 git 存儲庫中的文件(通過git init --bare創建,在我從本地機器(通過git clone創建)推送后)?我對我的服務器有 root 訪問權限。我試過 ssh-進入機器並從制作裸git reset --hard HEAD~1的目錄中執行git reset --hard HEAD~1 ,但我收到一條錯誤消息,指出我不在工作樹中。

這是我的情況。 我有一個跨平台項目,我在我的家庭網絡上的 git 服務器上保留了備份。 我將 IDE 文件與我的源代碼一起存儲,以便將整個存儲庫拉到已經安裝了 IDE 的“新”機器上,其中包含打開解決方案或工作區、構建和運行所需的一切。 昨晚很晚,當我的注意力幾乎消失時,我檢查了一個巨大的提交,其中包含 Visual Studio 在運行時生成的大型二進制文件(~35MB)( SolutionName.VC.dbSolutionName.VC.VC.opendb ,其中其他)。 我發現這些文件會大大減慢git clone速度,所以我想從我的存儲庫中完全刪除它們。

我願意簽出舊副本並重新提交/重新推送更改。 此外,作為預防措施,我已經將不需要的文件添加到我的.gitignore

您使用git reset --hard HEAD~1在正確的軌道上,但您應該在您的克隆中這樣做,而不是在服務器上。 執行此操作后,您需要推送到服務器,並使用-f選項強制重寫歷史記錄

git reset --hard HEAD~1
git push origin master -f

在此之后,更新.gitignore並提交它,然后添加其他更改,而沒有之前意外提交的 Visual Studio 文件。 最后再次提交並推送,您的相關更改應該再次出現,並且克隆應該再次快速。

git rm filename 
git commit 
git push 

應該做的工作。 這也會在本地刪除文件,因此不要將它用於您只是不想在線的文件。

暫無
暫無

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

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