如何在一个陈述中删除最旧的藏匿处(比如最老的5个藏匿处)而不是这样做:
git stash drop stash@{3}
git stash drop stash@{4}
git stash drop stash@{5}
git stash drop stash@{6}
git stash drop stash@{7}
答案 0 :(得分:5)
感谢匿名用户的编辑,正确的命令如下所示:
git stash list | cut -f 1 -d : | tail -5 | sort -r | xargs -n 1 git stash drop
这是他/她的解释:
git stash list
:列出所有藏匿处cut -f 1 -d
:仅选择第一列(隐藏标识符,例如stash @ {29})tail -5
:仅保留最后五行sort -r
:反转行的顺序,先删除最旧的存储(否则每次移除后剩余的存储都会获得新名称)xargs -n 1 git stash drop
:对于管道中传输的每一行,执行git stash drop,因为git stash drop
[可能]只支持一次存储。对这位神秘陌生人的所有荣誉。
答案 1 :(得分:1)
接受的答案很好。而且,如果您经常使用它,可以将其添加到这样的Shell函数中,该函数将使用一个参数表示要删除的旧存储的数量:
git-stash-prune() {
git stash list | cut -f 1 -d : | tail -"$1" | sort -r | xargs -n 1 git stash drop
}
那么您可以这样称呼它,例如,它将删除最近的10个藏匿处。
git-stash-prune 10