簡體   English   中英

使用BFG Repo-Cleaner從GitHub存儲庫中的過去提交中刪除文件

[英]Removing files from past commits in GitHub repository with BFG Repo-Cleaner

我的GitHub存儲庫中有一個文件,希望從以前的提交中刪除。 我使用了BFG Repo-Cleaner的delete-files命令,它似乎可以正常工作,但是當我進入GitHub存儲庫時,該文件仍在所有先前的提交中。 如果我再次嘗試執行該命令,它將給我一個

BFG中止:沒有引用更新-沒有發現臟提交?

我是否誤解了BFG的工作原理? 如果是這樣,如何從GitHub上的以往提交中刪除文件?

這是我采取的步驟:

  1. 使用--mirror標志將GitHub存儲庫的副本克隆到本地文件夾中。
  2. 然后我cd我的本地Visual Studio項目。
  3. 然后我輸入命令java -jar bfg-1.12.1.13.jar --delete-files <.json file I wanted to delete> <my local clone copy from step 1>.git
  4. 然后我在git reflog expire --expire=now --all && git gc --prune=now --aggressive輸入git reflog expire --expire=now --all && git gc --prune=now --aggressive
  5. git push

由於BFG回購清除器確實會重寫回購的歷史記錄,因此單獨使用git push應該不起作用。

但是,當您使用--mirror克隆(如您所做的)時,它應該可以工作,因為在git push ,本地更新的引​​用將在遠程端強制更新。

注意:

默認情況下,HEAD分支是受保護的,盡管將清除其歷史記錄,但最新的提交(“提示”)是受保護的提交,並且其文件層次結構將完全不會更改。

在回推之前,也不要忘記從HEAD(當前工作樹)中刪除文件。

經過討論 ,似乎命令未在正確的文件夾中執行。 該文件夾應以.git結尾: xxx.git :一個clone --mirror是一個裸clone --mirror

跳過您的步驟中的第2步,它應該可以工作(不要cd到您的<repo-name>.git )。

您需要從包含文件夾<repo-name>.git的文件夾中運行BFG。 BFG在工作目錄中尋找一個名為<repo-name>.git的文件夾。 這就是為什么它什么都沒改變的原因。

暫無
暫無

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

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