git - 去除悬挂 Blob 的最安全方法是什么

标签 git

git version 1.7.11.4

有没有安全的方法来摆脱悬空的 Blob /提交。我只是担心万一我不小心删除了某些东西。

git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (13017/13017), done.
dangling blob 6b9542f29f534b377f9ad280d6d342a4114146ec
dangling blob 0d1779fc8bac49a45b216e1891345b7f69ee068c
dangling blob f8ae5bad210ac84d66d28cb723dcad5b3f325bff
dangling blob e84f8c37c239bc591a52b1169669fb8f593b39b2
dangling blob 5d605b5d6ca0c7cb8d1bc05607eefada2092219b
dangling blob 9363f36de455d504cba3e78fbfb0cb133292fe55
dangling blob 0df63ff9133cc21b45a417958cb012689ebdc4cd
dangling commit fe764632c9d283b558f1326c56f940b3f3aea931
dangling blob b67bedfd9682fbc84f38d44b5112087dff004adc

我尝试过以下方法:

git gc --auto
git clean -f

最佳答案

首先,有一个 reflog 来跟踪所有分支历史记录。默认情况下为 90 天 (gc.reflogExpire)。 还有 gc.reflogExpireUnreachable 这是 30 天。因此,如果您在分支上进行了重置,则悬空提交将在此处保留 30 天,可通过 fsck 访问。

此外,还有一个垃圾收集器修剪设置,默认情况下会在 2 周后删除悬空对象(gc.pruneExpire 配置设置)。

关于如何从存储库中清除对象,您可以在此处阅读其他问题,例如How to REALLY delete a git branch (i.e. remove all of its objects/commits)?

clean 从工作副本中删除未跟踪的文件,它与 blob/commits 无关。

关于git - 去除悬挂 Blob 的最安全方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12384445/

相关文章:

git - 如何在切换到 Git 中的另一个分支之前保留更改

git - 如何使用 Ubuntu 命令行 pull 已上传到 Git 的项目?

git - 是否可以在 bash 的 PS1 中预先评估一个值?

git - 如何推送 .gitignore 中指定的文件?

混帐 "fatal: Authentication failed for ' http :. 。来自 Microsoft Visual Studio Team Foundation Server 的 .'"

git - 舞台部分线

git - 如何在postgresql中存储类似git分支的数据结构?

git - 如何查看 github fork 是否可能比原来的更远?

git 推送错误 : the requested URL returned error 400

Git rebase : fixup multiple commits with one commit