繁体   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