相关疑难解决方法(0)

git reflog expire和git fsck --unreachable

免责声明:这个问题纯粹是信息性的,并不代表我遇到的实际问题.我只是想弄清楚它的东西(因为我喜欢弄清楚东西,我知道你也这样做).

所以我正在玩git,试图使修改后的提交失效.我的reflog看起来像这样:

4eea1cd HEAD@{0}: commit (amend): amend commit
ff576c1 HEAD@{1}: commit: test: bar
5a1e68a HEAD@{2}: commit: test: foo
da8534a HEAD@{3}: commit (initial): initial commit
Run Code Online (Sandbox Code Playgroud)

这意味着我做了两次提交(da8534a5a1e68a),然后是ff576c1我修改过的第三次提交4eea1cd.

正如预期的那样,我git log看起来像这样:

* 4eea1cd (HEAD, master) amend commit
* 5a1e68a test: foo
* da8534a initial commit
Run Code Online (Sandbox Code Playgroud)

从我(虽然我)知道提交的可达性,有一天(最有可能,默认情况下在30天内)git gc应该收集ff576c1.现在我不想等待30天才能看到这种情况,所以我开始运行一些命令,首先:

git fsck --unreachable --no-reflogs
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,这让我:

unreachable blob 5716ca5987cbf97d6bb54920bea6adde242d87e6
unreachable tree 1e60e555e3500075d00085e4c1720030e077b6c8
unreachable commit ff576c1b4b6df57ba1c20afabd718c93dacf2fc6
Run Code Online (Sandbox Code Playgroud)

所有人都相信我将要过期这种可怜的孤独ff576c1承诺,然后我会跑git reflog expire:

git reflog …
Run Code Online (Sandbox Code Playgroud)

git reachability reflog

18
推荐指数
1
解决办法
4597
查看次数

标签 统计

git ×1

reachability ×1

reflog ×1