如何使用工作树中没有的提交清理git存储库

如何使用工作树中没有的提交清理git存储库,git,bitbucket,bfg-repo-cleaner,Git,Bitbucket,Bfg Repo Cleaner,我用bfg清理了Git存储库(Bitbucket云),但最后一次提交仍然未清理(正如bfg文档中所写:默认情况下,bfg不会修改主(或“HEAD”)分支上最近一次提交的内容,即使它会清理之前的所有提交) 但是,我没有看到它,希望在Bitbucket中运行git gc。 为此,我做了“git reset--hard HEAD”并回滚到它,然后“git push--force” 但是存储库的大小增加了 现在,我在这个提交中保留了存储库中的旧历史记录,而bfg无法清理它,我该怎么办? 既然它不再附加到

我用bfg清理了Git存储库(Bitbucket云),但最后一次提交仍然未清理(正如bfg文档中所写:默认情况下,bfg不会修改主(或“HEAD”)分支上最近一次提交的内容,即使它会清理之前的所有提交)

但是,我没有看到它,希望在Bitbucket中运行
git gc

为此,我做了“
git reset--hard HEAD
”并回滚到它,然后“
git push--force

但是存储库的大小增加了

现在,我在这个提交中保留了存储库中的旧历史记录,而bfg无法清理它,我该怎么办?

既然它不再附加到工作树上,我如何删除它?

您可以告诉BFG也使用
--无blob保护
标志更改上次提交*(这来自BFG回购清洁剂文档)


或者,您可以创建一个新的提交,删除坏文件,然后正常运行BFG。

您可以告诉BFG也使用
--无blob保护
标志更改最后一次提交*(这来自BFG回购清洁剂文档)


或者,您可以创建一个新的提交,删除坏文件,然后正常运行BFG。

请重试,这次使用,其中

如其文件所述:

[还有]删除其他标记和执行另一个gc的额外步骤仍然需要清除旧对象,并避免在推到某个位置之前混合新的和旧的历史

git filter repo
确实避免了由于将旧的回购和重写的回购混合在一起而导致用户混淆(并防止意外地重新推送旧的东西)


注意:在服务器端(即,您要推到的位置),需要运行git gc,这是定期进行的,但不是立即进行的。
这就是比特桶,也是比特桶

请参阅Atlassian文档“”

Bitbucket实现了自己的垃圾收集逻辑,不再依赖于
git-gc
(这是通过在所有存储库上设置[gc]auto=0实现的)。
创建fork时,会将pruneexpire=never添加到git配置中,并在删除最后一个fork时将其删除

作为:

BitBucket将自己运行
git gc
,以响应执行
git reset--hard HEAD~1
(它放弃最后一次提交),然后执行
git push-f

因此,在你的情况下:

git commit --allow-empty -m "empty commit"
git push

git reflog expire --expire-unreachable="30m" --all
git prune --expire="30m" -v
git gc --prune="30m"
git reset --hard HEAD~1
git push -f

而且应该在BitBucket端执行一个
git gc

再试一次,这次使用

如其文件所述:

[还有]删除其他标记和执行另一个gc的额外步骤仍然需要清除旧对象,并避免在推到某个位置之前混合新的和旧的历史

git filter repo
确实避免了由于将旧的回购和重写的回购混合在一起而导致用户混淆(并防止意外地重新推送旧的东西)


注意:在服务器端(即,您要推到的位置),需要运行git gc,这是定期进行的,但不是立即进行的。
这就是比特桶,也是比特桶

请参阅Atlassian文档“”

Bitbucket实现了自己的垃圾收集逻辑,不再依赖于
git-gc
(这是通过在所有存储库上设置[gc]auto=0实现的)。
创建fork时,会将pruneexpire=never添加到git配置中,并在删除最后一个fork时将其删除

作为:

BitBucket将自己运行
git gc
,以响应执行
git reset--hard HEAD~1
(它放弃最后一次提交),然后执行
git push-f

因此,在你的情况下:

git commit --allow-empty -m "empty commit"
git push

git reflog expire --expire-unreachable="30m" --all
git prune --expire="30m" -v
git gc --prune="30m"
git reset --hard HEAD~1
git push -f

而且应该在BitBucket端执行一个
git gc

我在bitbucket support中编写,他们在服务器上运行脚本“git gc”,旧故事被清理

我在bitbucket support中编写,他们在服务器上运行脚本“git gc”,旧故事被清理

我尝试过这样做,但提交不再在工作树中,bfg没有看到itI尝试这么做,但是提交不再在工作树中,bfg也看不到它。您应该能够在BitBucket端触发
git gc
(无需联系他们)。看。我知道,是我做的,这对我没有帮助。BitBucket支持人员可以回答为什么他们自己的进程没有触发
git gc
。你应该能够在BitBucket端触发
git gc
(无需联系他们)。看。我知道,我做到了,这对我没有帮助。BitBucket支持人员可以回答为什么他们自己的进程没有触发
git gc