如何一次删除所有Git stashes?

Reb*_*ury 1280 git

如何一次删除所有Git stashes?

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

Tad*_*eck 2255

以下命令删除所有存储:

git stash clear
Run Code Online (Sandbox Code Playgroud)

git文档:

clear

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

  • @ user20358:因为`stash drop`("_从隐藏列表中删除单个隐藏状态.当没有给出<stash>时,它会删除最新的.(...)_")不回答问题("_How我可以立刻删除所有**我的Git stashes吗?_")? (121认同)
  • 注意:`stash clear`不要求你确认. (26认同)
  • 为什么不git stash drop? (11认同)
  • @Ryan:`git help <command>`是获取文档的最佳方式(实际上它非常好).在这种情况下,`git help stash`清楚地表明`git stash clear`做了这件事(这并没有阻止我首先来到SO并提出答案......但是这告诉你更多关于我而不是`git` :D) (8认同)
  • 除了接受的答案 - "git stash clear",确认是否全部清除,使用 - `git stash list` (7认同)
  • @Tadeck,好的,`stash drop` *删除单个隐藏状态*。但是`stash clear`有这个*请注意,这些状态将受到修剪,并且可能无法恢复*。而`stash drop`没有那个文字。所以人们很容易认为这些命令不做同样的事情并且有一些很大的不同。 (4认同)
  • @ jedd.ahyoung这应该有另外1,000个赞成票.几乎不可能找到`git`的文档!https://git-scm.com/docs/git-stash (2认同)

小智 34

立即清除所有藏匿处

    git stash clear
Run Code Online (Sandbox Code Playgroud)

列出所有藏匿处

    git stash list
Run Code Online (Sandbox Code Playgroud)

删除特定的存储

    git stash drop stash@{index}
Run Code Online (Sandbox Code Playgroud)


Nes*_*ric 26

删除存储有两种方法:

  1. 如果您不再需要特定的藏匿处,你可以删除它:$ git stash drop <stash_id>.
  2. 您可以使用以下命令从回购中删除所有的藏匿处:$ git stash clear.

谨慎使用它们,可能很难恢复曾经删除过的藏匿处.

这是参考文章.

  • 关闭终端与它无关。git不是守护进程;它仅在您调用时运行。不知道你关闭了终端。 (2认同)

Vik*_*yap 17

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

git stash list
Run Code Online (Sandbox Code Playgroud)

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

git stash clear
Run Code Online (Sandbox Code Playgroud)

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

git stash drop stash@{index}   // here index will be shown after getting stash list.
Run Code Online (Sandbox Code Playgroud)

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

  • 值得一提的是,至少对于使用 Windows 10 的 VSCode 中的集成终端来说,它是 `git stash drop 'stash@{index}'`,带有撇号。 (3认同)

Shu*_*rma 13

如果你点击 \xe2\x80\x9c git stash list \xe2\x80\x9d 你会得到哈希列表。

\n

在此输入图像描述

\n

删除隐藏的内容:

\n

1)仅删除一些选定的存储,然后运行以下命令:

\n
git stash drop stash@{index}\n
Run Code Online (Sandbox Code Playgroud)\n

2)一次性删除完整列表,运行以下命令:

\n
  git stash clear\n
Run Code Online (Sandbox Code Playgroud)\n


krl*_*mlr 9

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

git reflog expire --expire-unreachable=40.days refs/stash
Run Code Online (Sandbox Code Playgroud)

添加--dry-run以查看删除了哪些存储。

有关解释和更多详细信息,请参阅/sf/answers/3138066151/


小智 8

从列表中清除所有存储:

git stash clear
Run Code Online (Sandbox Code Playgroud)

从列表中清除特定索引:

git stash drop index
Run Code Online (Sandbox Code Playgroud)


Shi*_*waj 7

如果您想删除最新的存储或任何特定索引-

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
Run Code Online (Sandbox Code Playgroud)

如果你想一次删除所有的藏品-

> git stash clear
>

> git stash list
>
Run Code Online (Sandbox Code Playgroud)

警告:一旦完成,您将无法恢复您的存储


war*_*arp 6

我想保留一些最近的存储,但是删除其他所有内容。

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

while git stash drop 'stash@{20}'; do true; done
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个简单、优雅的解决方案! (2认同)

小智 6

如果您只想清除最新的存储,或者甚至使用git stash create创建了存储,那么您应该简单地使用

git stash drop
Run Code Online (Sandbox Code Playgroud)

但如果你想清除当前 git 存储库的所有 git stashes,那么你可以使用

git stash clear
Run Code Online (Sandbox Code Playgroud)

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


Bal*_*nan 5

我还有另一个要求,比如只需要删除很少的藏匿处,在这种情况下,下面的代码会有所帮助。

#!/bin/sh
for i in `seq 5 8`
do
   git stash drop stash@{$i}
done
Run Code Online (Sandbox Code Playgroud)

/* 将删除从 5 到 8 的索引*/

  • 请注意,当您掉落时,剩余的藏品会上升 1 位。因此,如果您想从 5 删除到 8,则需要倒数或删除 stash@{5} 四次。例如:`for i in \`seq 4\`;执行 git stash drop 'stash@{5}'; 完成` (6认同)
  • 尝试“for iterator in \`seq 5 8\”;git stash drop stash@{$iterator}; 完成` (2认同)