小编典典

如何删除使用 git stash create 创建的存储?

all

Git stash 似乎做了很多我想做的事情,除了编写脚本有点困难,因为如果你没有更改,那么git stash; git stash pop会做一些不同于你在存储库中有更改的事情。

看来这git stash create就是这个问题的答案,一切正常,除了一件事——我无法摆脱创建的存储。有什么办法可以摆脱藏匿处?

为了让我 100% 清楚我在做什么:

创建存储:

~/tmp/a(master) $ git stash create 
60629375d0eb12348f9d31933dd348ad0f038435
~/tmp/a(master) $ git st
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#
~/tmp/a(master) $ git reset --hard
HEAD is now at 555d572 log message

使用存储:

~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory
~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#

删除存储:(除了最后一点不起作用)

~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference

阅读 233

收藏
2022-03-03

共1个答案

小编典典

要删除使用 创建的普通存储git stash,您需要git stash dropgit stash drop stash@{n}。请参阅下面的更多细节。


您不需要删除使用git stash create. 从文档:

创建一个存储条目(这是一个常规提交对象)并返回其对象名称,而不将其存储在 ref
命名空间中的任何位置。这旨在对脚本有用。它可能不是您要使用的命令;参见上面的“保存”。

由于没有任何内容引用存储提交,因此最终会收集垃圾。


git stash使用或创建的存储git stash save区保存到refs/stash,并且可以使用 删除git stash drop。与所有 Git 对象一样,实际存储内容不会从您的计算机中删除,直到在gc这些对象过期后修剪它们(默认为 2 周后)。

较旧的 stash 保存在refs/stash reflog (try
cat .git/logs/refs/stash) 中,可以使用 删除git stash drop stash@{n},其中n
显示的数字git stash list

2022-03-03