如何通过提交 sha 删除存储

How to delete stash by commit sha

是否可以通过提交 sha 删除 stash 而不是使用

删除索引
git stash drop stash@{index}

不直接,不。您必须将散列转换为其相应的 reflog 条目,并通过 reflog-entry-name 删除它。

使用 git reflog stash 或其等价物(但更具延展性)git log -g stash 遍历存储引用日志以按 ID 查找提交。考虑如果它不存在该怎么办(可能存储已经被丢弃),and/or 如果它不止一次出现该怎么办(这在正常操作中永远不会发生,但是没有什么可以从根本上阻止 stash reflog多次列出相同的提交哈希)。

git log -g --format='%H %gd' stash | \
    awk -v h=$hash ' == h { print  }'

将为每个匹配的散列打印一行(假设 $hash 设置为完整的 40 字符散列)。