删除 git 个超过 N 的存储
Remove git stashes beyond N
我定期将更改存储在 git 中,并且建立了相当长的存储列表(巧合的是'stache)。我目前的回购有 68 个藏品。有没有办法通过清除除 N 个最近的存储之外的所有存储来清理存储列表?
我调查过的选项:
git stash clear
- 删除整个隐藏列表
git stash drop <stash>
- 删除特定的 <stash>
第一个选项将删除整个隐藏列表,后者将需要几十个命令。我正在寻找与 git rebase -i HEAD~N
工作原理类似的东西,其中可以向命令提供一个数字。
使用一点 shell 循环。请注意,当您删除第 N 个存储区时,所有后续存储区都会重新编号;当没有第 N 个存储时,git stash drop stash@{N}
失败(吵闹地,什么也不做)。因此你可以只使用:
while git stash drop stash@{30}; do done
它在循环内什么都不做,依赖于退出循环失败。 (显然,将 30 替换为 N 所需的值。)
编辑:bash
循环内至少需要一个命令:
while git stash drop stash@{30}; do :; done
这使用了内置的什么都不做 :
命令,所以看起来有点奇怪。如果您愿意,内置的 true
命令也可以使用:
while git stash drop stash@{30}; do true; done
(内置的 false
命令也可以工作,但是 returns 一个失败的退出代码,因此不适合可能设置了 -e
的脚本。)
我创建了一个简单的 npm
包,用于 trim 将 git
存储到指定数量。安装后,一个简单的 git-trim-stash 10
将 trim git
存储到最近的 10 个存储中。
该包非常轻巧,并且具有零依赖性。
有关 npm site 的更多信息。
我定期将更改存储在 git 中,并且建立了相当长的存储列表(巧合的是'stache)。我目前的回购有 68 个藏品。有没有办法通过清除除 N 个最近的存储之外的所有存储来清理存储列表?
我调查过的选项:
git stash clear
- 删除整个隐藏列表
git stash drop <stash>
- 删除特定的 <stash>
第一个选项将删除整个隐藏列表,后者将需要几十个命令。我正在寻找与 git rebase -i HEAD~N
工作原理类似的东西,其中可以向命令提供一个数字。
使用一点 shell 循环。请注意,当您删除第 N 个存储区时,所有后续存储区都会重新编号;当没有第 N 个存储时,git stash drop stash@{N}
失败(吵闹地,什么也不做)。因此你可以只使用:
while git stash drop stash@{30}; do done
它在循环内什么都不做,依赖于退出循环失败。 (显然,将 30 替换为 N 所需的值。)
编辑:bash
循环内至少需要一个命令:
while git stash drop stash@{30}; do :; done
这使用了内置的什么都不做 :
命令,所以看起来有点奇怪。如果您愿意,内置的 true
命令也可以使用:
while git stash drop stash@{30}; do true; done
(内置的 false
命令也可以工作,但是 returns 一个失败的退出代码,因此不适合可能设置了 -e
的脚本。)
我创建了一个简单的 npm
包,用于 trim 将 git
存储到指定数量。安装后,一个简单的 git-trim-stash 10
将 trim git
存储到最近的 10 个存储中。
该包非常轻巧,并且具有零依赖性。
有关 npm site 的更多信息。