Git:删除损坏的存储

标签 git git-stash

我有一个破损的储藏室:

% git stash drop            
fatal: log for refs/stash is empty
% cat .git/logs/refs/stash
%

它确实出现在git log --all中,不过:

% lal

*   f32cdce - (HEAD -> develop, origin/develop) (44 minutes ago) <Williams, Ken>
|\  
| * 05cc7d3 - (3 weeks ago) <Ken Williams>
| * 6d9c8ae - (3 weeks ago) <Ken Williams>
| | * 3fb311d - (refs/stash) (3 weeks ago) <Ken Williams>
| |/| 
| | * 19be16e - (3 weeks ago) <Ken Williams>
| |/  
| * ffea5e2 - (i2) (9 weeks ago) <Ken Williams>

( lal 是我的 git log --graph --pretty=format:'%h -%C(yellow)%d%Creset %Cgreen(%ad) %C(bold blue)<%an>%Creset' --all 的别名。)

我做了一个git stash apply 3fb311d ,所以我已经保护了 stash 的内容。现在,如何删除 refs/stash从树上摘下,这样它就不会一直提示?

编辑

即使删除了 refs/stash按照 @mark-adelsberger 建议的引用,提交显示在历史列表中:

% lal

*   f32cdce - (HEAD -> develop, origin/develop) (31 hours ago) <Williams, Ken>
|\  
| * 05cc7d3 - (3 weeks ago) <Ken Williams>
| * 6d9c8ae - (3 weeks ago) <Ken Williams>
| | * 3fb311d - (3 weeks ago) <Ken Williams>
| |/| 
| | * 19be16e - (3 weeks ago) <Ken Williams>
| |/  
| * ffea5e2 - (i2) (9 weeks ago) <Ken Williams>
| * 199af47 - (9 weeks ago) <Ken Williams>
...

这是在 OS X 10.15.7 上使用 Git 2.29.0(自制软件)。

最佳答案

更新 - 根据编辑的问题在末尾添加注释


如果 .git/refs/stash 为空(或不存在),但 git log 显示 refs/stash,那么我会怀疑 stash ref 以某种方式添加到您的 packed-refs 文件中。

您可以通过以下方式确认引用的存在(无论其在磁盘上的表示形式如何)

git for-each-ref refs/stash

如果显示refs/stash(我认为会),那么您可以使用

删除引用
git update-ref -d refs/stash

提醒一下,这是一个潜在的破坏性命令;在特定情况下,您知道您已经保存了对该数据的引用,或者不再需要它,那么就可以了。


因此,我不清楚什么会导致日志报告似乎无法访问的提交(基于图表以及该特定提交上缺少引用名称)。如果我有一个处于该状态的存储库,我想我可以弄清楚发生了什么,但我真的不知道如何重现该症状。

我最好的建议是这样做

git for-each-ref |grep 3fb311d

查看是否由于某种原因引用没有在日志中命名。如果这没有显示任何内容,那么另一个想法就是

git for-each-ref

或者看看是否

git fsck

告诉你任何有用的事情。如果其中任何一个能提供更多信息,我将很乐意查看并提供更多建议。

关于Git:删除损坏的存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64756516/

相关文章:

Git 差异 : is it possible to show ONLY changed lines

git - 撤消导致 merge 冲突的 git stash pop

git checkout 分支名称不起作用

linux - 克隆到 Samba 共享时 Git 速度很慢

java - 如何在 Eclipse 中构建一个没有 Maven 和 gradle 文件且存储库中没有 .jar 文件的 Java Github 项目

github:全局更改 user.name 后访问被拒绝

git: checkout 时自动 stash + pop

git - 中止 rebase 后如何应用自动存储?

git 一次应用多个存储

git - 尝试创建 git 存储库并向其提交文件,但没有成功