git stash drop最古老的stashes(说最老的5个stashes)

时间:2015-12-17 22:43:56

标签: git git-stash

如何在一个陈述中删除最旧的藏匿处(比如最老的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}

2 个答案:

答案 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