Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git存储丢弃最旧的存储(假设最旧的5个存储)_Git_Git Stash - Fatal编程技术网

git存储丢弃最旧的存储(假设最旧的5个存储)

git存储丢弃最旧的存储(假设最旧的5个存储),git,git-stash,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} git stash list | cut -f 1 -d : | tail -5 | sort -r | xargs -n 1 git stash drop 由于匿名用户

如何在一条语句中删除最旧的存储(比如最旧的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}
git stash list | cut -f 1 -d : | tail -5 | sort -r | xargs -n 1 git stash drop

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

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}
git stash list | cut -f 1 -d : | tail -5 | sort -r | xargs -n 1 git stash drop
以下是他/她的解释:

  • git藏品列表
    :列出所有藏品
  • cut-f1-d
    :仅选择第一列(隐藏标识符,例如隐藏{29})
  • tail-5
    :只保留最后五行
  • sort-r
    :颠倒行的顺序,首先删除最旧的存储(否则剩余的存储在每次删除后都会得到新名称)
  • xargs-n 1 git stash drop
    :对于管道中传输的每一行,执行git stash drop,因为
    git stash drop
    [可能]一次只支持一个stash

向这位神秘的陌生人致敬。

公认的答案很好。如果您可能经常使用它,您可以将其添加到如下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

谢谢你的回答!一个建议:如果有9个以上的库存,可以使用
tac
而不是
sort-r
来反转要处理的行。这对我帮助很大!!!谢谢@lacostenycoder!!我有200多个藏品,因为我喜欢做实验,但有些太老了,一年左右就无法保存…@softdev3015很高兴你发现这很有用。我还有很多,如果你觉得有用的话