使用 BFG Repo-Cleaner 从 GitHub 存储库中删除过去提交的文件
Removing files from past commits in GitHub repository with BFG Repo-Cleaner
我的 GitHub 存储库中有一个文件,我想将其从之前的提交中删除。我使用了 BFG Repo-Cleaner 的 delete-files
命令,它似乎可以工作,但是当我继续我的 GitHub 存储库时,该文件仍在所有以前的提交中。如果我再次尝试执行命令,它会给我一个
BFG aborting: No refs to update - no dirty commits found??
我是不是误解了 BFG 的工作原理?如果是这样,我如何从我过去在 GitHub 的提交中删除文件?
以下是我采取的步骤:
- 使用
--mirror
标志将我的 GitHub 存储库的副本克隆到本地文件夹中。
- 然后我
cd
我的本地 visual studio 项目。
- 然后我输入命令
java -jar bfg-1.12.1.13.jar --delete-files <.json file I wanted to delete> <my local clone copy from step 1>.git
- 然后我输入了
git reflog expire --expire=now --all && git gc --prune=now --aggressive
- 运行
git push
单独使用 git push
是行不通的,因为 BFG repo cleaner 确实重写了回购的历史记录。
当您使用 --mirror
克隆(就像您所做的那样)时它应该可以工作,因为在 git push
上,本地更新的引用将在远程端强制更新。
注意:
By default the HEAD branch is protected, and while its history will be cleaned, the very latest commit (the 'tip') is a protected commit and its file-hierarchy won't be changed at all.
在返回之前,不要忘记从 HEAD(当前工作树)中删除文件。
在 discussion 之后,命令似乎没有在正确的文件夹中执行。该文件夹应以 .git
结尾:xxx.git
:clone --mirror
是一个裸仓库。
跳过你的步骤中的第 2 步,它应该可以工作(不要 cd
进入你的 <repo-name>.git
)。
您需要从包含文件夹 <repo-name>.git
的文件夹中 运行 BFG。 BFG 正在工作目录中寻找名为 <repo-name>.git
的文件夹。这就是为什么它没有改变任何东西。
我的 GitHub 存储库中有一个文件,我想将其从之前的提交中删除。我使用了 BFG Repo-Cleaner 的 delete-files
命令,它似乎可以工作,但是当我继续我的 GitHub 存储库时,该文件仍在所有以前的提交中。如果我再次尝试执行命令,它会给我一个
BFG aborting: No refs to update - no dirty commits found??
我是不是误解了 BFG 的工作原理?如果是这样,我如何从我过去在 GitHub 的提交中删除文件?
以下是我采取的步骤:
- 使用
--mirror
标志将我的 GitHub 存储库的副本克隆到本地文件夹中。 - 然后我
cd
我的本地 visual studio 项目。 - 然后我输入命令
java -jar bfg-1.12.1.13.jar --delete-files <.json file I wanted to delete> <my local clone copy from step 1>.git
- 然后我输入了
git reflog expire --expire=now --all && git gc --prune=now --aggressive
- 运行
git push
单独使用 git push
是行不通的,因为 BFG repo cleaner 确实重写了回购的历史记录。
当您使用 --mirror
克隆(就像您所做的那样)时它应该可以工作,因为在 git push
上,本地更新的引用将在远程端强制更新。
注意:
By default the HEAD branch is protected, and while its history will be cleaned, the very latest commit (the 'tip') is a protected commit and its file-hierarchy won't be changed at all.
在返回之前,不要忘记从 HEAD(当前工作树)中删除文件。
在 discussion 之后,命令似乎没有在正确的文件夹中执行。该文件夹应以 .git
结尾:xxx.git
:clone --mirror
是一个裸仓库。
跳过你的步骤中的第 2 步,它应该可以工作(不要 cd
进入你的 <repo-name>.git
)。
您需要从包含文件夹 <repo-name>.git
的文件夹中 运行 BFG。 BFG 正在工作目录中寻找名为 <repo-name>.git
的文件夹。这就是为什么它没有改变任何东西。