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 个存储)的主要内容,如果未能解决你的问题,请参考以下文章