我的GitHub存储库中有一个文件,我想从之前的提交中删除。我使用了BFG Repo-Cleaner的 private void GetHDDdetails()
{
ConnectionOptions options = new ConnectionOptions();
options.Username = "username";
options.Password = "password";
options.Impersonation = ImpersonationLevel.Impersonate;
ManagementScope oMs = new ManagementScope("\\\\remoteHostName\\root\\cimv2", options);
ObjectQuery oQuery = new ObjectQuery("SELECT Size FROM Win32_DiskDrive");
ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery);
ManagementObjectCollection oCollection = oSearcher.Get();
foreach (ManagementObject obj in oCollection)
{
hddBox.Text = obj["Size"].ToString();
}
}
命令,它似乎可以工作,但是当我继续使用我的GitHub存储库时,该文件仍然在所有先前的提交中。如果我再次尝试执行该命令,它会给我一个
BFG中止:没有引用更新 - 没有发现脏提交??
我误解了BFG的工作原理吗?如果是这样,我如何从GitHub上的过去提交中删除该文件?
以下是我采取的步骤:
delete-files
标记将我的GitHub仓库副本克隆到本地文件夹中。--mirror
到我当地的视觉工作室项目。 cd
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
答案 0 :(得分:2)
仅git push
不起作用,因为BFG repo cleaner会重写回购的历史记录。
当您使用--mirror
克隆(就像您一样)时它应该有效,因为在git push
上,本地更新的引用将在远程端强制更新。
请注意:
默认情况下,HEAD分支受到保护,并且在清除其历史记录时,最新的提交(&#39;提示&#39;)是受保护的提交,其文件层次结构不会被更改一点都不。
在推回之前,不要忘记从HEAD(当前工作树)中删除文件。
在discussion之后,似乎命令没有在右侧文件夹中执行。该文件夹应以.git
结尾:xxx.git
:clone --mirror
是一个简单的回购。
答案 1 :(得分:0)
在您的步骤中跳过第2步,它应该有效(不要cd
进入您的<repo-name>.git
)。
您需要从包含文件夹<repo-name>.git
的文件夹中运行BFG。 BFG正在工作目录中查找名为<repo-name>.git
的文件夹。这就是为什么它没有改变任何东西。