git stash drop 最旧的存储(比如最旧的 5 个存储)

Posted

技术标签:

【中文标题】git stash drop 最旧的存储(比如最旧的 5 个存储)【英文标题】:git stash drop oldest stashes ( say oldest 5 stashes) 【发布时间】:2016-03-24 13:50:32 【问题描述】:

如何在一个语句中删除最旧的存储(比如最旧的 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

【问题讨论】:

【参考方案1】:

感谢匿名用户的编辑,正确的命令如下所示:

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 [可能] 一次只支持一个存储。

向神秘的陌生人致敬。

【讨论】:

感谢您的回答!一个建议:如果存储超过 9 个,可以使用 tac 而不是 sort -r 来反转要处理的行。【参考方案2】:

接受的答案很棒。如果您可能经常使用它,您可以将它添加到这样的 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

【讨论】:

这对我帮助很大!!!谢谢@lacostenycoder!!我有 200 多个藏匿处,因为我喜欢试验,但有些藏匿了一年左右后太旧了…… @SoftDev30_15 很高兴您发现这很有帮助。我还有很多useful terminal functions I use a lot here,如果你发现其中任何一个有用please let me know here

以上是关于git stash drop 最旧的存储(比如最旧的 5 个存储)的主要内容,如果未能解决你的问题,请参考以下文章

Db2/sql:使用连接选择和更新最旧的条目

PowerShell - 查找最旧的电子邮件

获取最旧的修改价格

使用批处理将 10 个最旧的备份移动到存档

如何从字典中删除最旧的元素?

AWS AutoScaling 'oldestinstance' 终止策略并不总是终止最旧的实例