Git储藏失败'错误:无法解析引用refs/stash:没有这样的文件或目录'

11

Git pull 命令可以正常工作,但是 git stash 命令会出现以下错误:

$git stash
error: unable to resolve reference refs/stash: No such file or directory
fatal: Cannot lock the ref 'refs/stash'.
Cannot save the current status

我该如何解决这个问题,以防止丢失我的更改?


жӮЁзҡ„з”ЁжҲ·еңЁ.git/.git/refsзӣ®еҪ•дёӯжҳҜеҗҰе…·жңүеҶҷе…Ҙжқғйҷҗпјҹ - knittl
1
你使用的操作系统和git版本是什么? - VonC
git版本为1.7.9.5,操作系统为Linux。 .git和.git/refs具有读取和执行权限。 - skadoosh
1
@schipitch:你必须能够写入目录,否则无法创建文件。 - knittl
@schipitch:也许你以另一个用户(例如root)的身份发出了git命令。这可能会导致您的用户权限错误。 - knittl
显示剩余2条评论
3个回答

23

我遇到了一个非常类似的问题,这是在文件系统损坏后发生的。

解决方案是删除.git/logs/refs/stash目录中的文件或目录。

删除文件或目录后,请使用git stash创建新引用,就完成了。

这将删除您可能拥有的任何存储,所以请小心操作。

git stash
error: refs/stash does not point to a valid object!
rm -r .git/logs/refs/stash
git stash
Saved working directory and index state WIP on master: e1d74d8 fixing get_thumbnail_list

是的,我做了类似的事情,这个问题就没有再出现了。谢谢。 - skadoosh
6
在 Git 版本 2.6.2 中,可以在 .git/refs/stash 找到该文件。 - matthias.bgg
如果您在多个分支上有多个存储区,以及多个存储区共享单个父提交,则文件/提交/对象位于何处? - Dai

20

我不得不删除以下文件才能让它运行。

rm -f .git/refs/stash

2
电脑在进行git stash操作时崩溃,似乎我失去了所有的存储。简而言之:仅删除这个坏的.git/refs/stash文件,我就能恢复我的存储列表。如果有帮助的话:我的存储在.git/logs/refs/stash中看起来还好(所以不想删除它)。按照https://dev.to/meduzen/recover-a-lost-git-stash-in-two-steps-569的第一步操作,`git fsck命令报告: error: refs/stash: invalid sha1 pointer 0000000000000000000000000000000000000000 error: bad ref for refs/stash`但是在此停止并搜索以找到这个SO答案:D。 - ErrCode
没有完全工作-似乎它只是允许git stash list返回,但尝试运行git stash apply根本不起作用。 警告:引用refs/stash的日志在2019年12月17日星期二22:27:25 +0900意外结束。我猜我必须放弃这个仓库并重新开始。其他git操作似乎也不能正常工作。 - ErrCode
我还必须删除.git/refs/stash.lock。之后,git stash开始正常工作了。 - Andrii Tykhonov

2
你可以删除stash并添加新的stash文件夹,如果在删除stash后问题仍然存在:
``` rm -r .git/logs/refs/stash mkdir .git/logs/refs/stash ```

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接