如何一次删除所有Git stashes?

时间:2012-07-06 20:38:59

标签: git

如何一次性删除所有Git个藏匿栏?

具体来说,我的意思是,输入一个命令。

9 个答案:

答案 0 :(得分:2052)

以下命令会删除所有藏匿处:

git stash clear

来自git documentation

  

<强> clear

     

删除所有隐藏状态。请注意,这些状态将会被修剪,并且可能无法恢复(...)。

答案 1 :(得分:13)

删除存储有两种方法:

  1. 如果您不再需要特定存储,可以使用以下代码删除它:$ git stash drop <stash_id>
  2. 您可以使用以下代码删除回购中的所有藏匿处:$ git stash clear
  3. 谨慎使用它们,可能很难恢复曾经删除过的藏匿处。

    这是reference article

答案 2 :(得分:7)

此命令使您可以查看所有隐藏的更改。

git stash list

以下命令使用它清除所有隐藏的更改

git stash clear

现在,如果您要从存储区中删除其中一个隐藏的更改,则

git stash drop stash@{index}   // here index will be shown after getting stash list.
  

注意:git stash list使您能够从git的存储区获取索引。

答案 3 :(得分:7)

我想保留一些近期藏匿处,但删除其他所有内容。

因为当您放下一个藏书柜时所有藏书柜都被重新编号,所以使用while实际上很容易做到。要删除所有早于stash @ {19}的存储,请执行以下操作:

while git stash drop 'stash@{20}'; do true; done

答案 4 :(得分:6)

如果要删除最新的存储空间或要删除任何特定索引-

git stash drop type_your_index

> git stash list

  stash@{0}: abc
  stash@{1}: xyz
  stash@{1}: pqr

> git stash drop 0

  Dropped refs/stash@{0}

> git stash list

  stash@{0}: xyz
  stash@{1}: pqr

如果您想一次删除所有存储卡-

> git stash clear
>

> git stash list
>

警告 :完成后,您将无法还原存储

答案 5 :(得分:4)

要删除所有超过40天的存储,请使用:

git reflog expire --expire-unreachable=40.days refs/stash

添加--dry-run可以查看哪些存储区被删除。

有关说明和更多详细信息,请参见https://stackoverflow.com/a/44829516/946850

答案 6 :(得分:0)

我还有另一个要求,例如只需要删除很少的存储,在这种情况下,以下代码会有所帮助。

#!/bin/sh
for i in `seq 5 8`
do
   git stash drop stash@{$i}
done

/ *将删除5到8个索引* /

答案 7 :(得分:0)

清除列表中的所有存储: git stash 清除

从列表中清除特定索引: git stash drop index

答案 8 :(得分:0)

如果您只想清除最新的存储或 即使你用 git stash create 创建了一个 stash 然后 你应该简单地使用

git stash drop

但是如果你想清除当前 git 存储库的所有 git stash 然后你可以使用

git stash clear

警告:这些状态将被修剪(敲除),并且可能无法恢复