我定期存储git中的更改,并建立了相当长的存储列表(和“巧合”的巧合)。我目前的回购有68个藏匿处。有没有办法通过清除所有N个最近的藏匿处来清除藏匿列表?
我已经研究过的选项:
git stash clear
- 删除整个存储列表
git stash drop <stash>
- 删除特定的<stash>
第一个选项会删除整个存储列表,后者需要几十个命令。我正在寻找git rebase -i HEAD~N
如何工作的方法,其中一个数字可以提供给命令。
答案 0 :(得分:3)
使用一个小shell循环。请注意,当您放下 N 后,所有后续版本都会重新编号;当没有 N 的存储时,git stash drop stash@{N}
失败(吵闹,什么都不做)。因此你可以使用:
while git stash drop stash@{30}; do done
在循环内部什么都不做,依赖于退出循环的失败。 (显然,将 N 替换为30所需的值。)
编辑:bash
在循环中至少需要一个命令:
while git stash drop stash@{30}; do :; done
这使用内置的do-nothing :
命令,因此看起来有点奇怪。如果您愿意,内置的true
命令也可以:
while git stash drop stash@{30}; do true; done
(内置false
命令也可以,但返回失败的退出代码,因此不适合可能设置-e
的脚本。)
答案 1 :(得分:0)
我创建了一个简单的npm
包,用于将git
存储修剪为指定的数字。安装完成后,一个简单的git-trim-stash 10
会将git
个藏匿点修剪为最近的10个藏匿处。
该包非常轻量级,并且没有依赖关系。
有关npm site的更多信息。