【问题标题】:How can I delete all of my Git stashes at once?如何一次删除所有 Git 存储?
【发布时间】:2012-07-07 08:03:40
【问题描述】:

如何一次删除我所有的 Git 存储?

我的意思是,输入一个命令。

【问题讨论】:

    标签: git git-stash


    【解决方案1】:

    以下命令会删除您的所有存储:

    git stash clear
    

    来自git documentation

    clear

    删除所有隐藏的状态。

    重要警告:这些状态将受到修剪,并且可能无法恢复 (...)。

    【讨论】:

    • 为什么不 git stash drop ?
    • @user20358: 因为stash drop (" 从存储列表中删除单个隐藏状态。当没有给出 时,它会删除最新的。(...) ") 没有回答问题(“如何一次删除 所有 我的 Git 存储?”)?
    • @Tadeck, ok, stash drop 删除单个隐藏状态。但是stash clear 有这个请注意,这些状态将受到修剪,并且可能无法恢复。而stash drop 没有该文本。所以人们很容易认为这些命令做的不是同一件事,而且有很大的不同。
    • 除了提到的已接受答案 - git stash clear,要确认是否全部清除,请使用 - git stash list
    • @Ryan:git help <command> 是获取文档的最佳方式(而且,它实际上非常好)。在这种情况下,git help stash 清楚地表明git stash clear 做了这件事(这并没有阻止我首先来到 SO 并支持答案......但这比git 更能告诉你关于我的信息:D)
    【解决方案2】:

    有两种删除存储的方法:

    1. 如果您不再需要特定的存储,可以使用以下命令将其删除:$ git stash drop <stash_id>
    2. 您可以通过 $ git stash clear 从存储库中删除所有存储。

    谨慎使用它们,可能很难恢复曾经删除的存储。

    这里是reference article

    【讨论】:

    • 关闭终端与此无关。 git 不是守护进程;它仅在您调用它时运行。它不知道你关闭了终端。
    【解决方案3】:

    此命令可让您查看所有隐藏的更改:

    git stash list
    

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

    git stash clear
    

    现在,如果您想从隐藏区域中删除其中一项隐藏的更改:

    git stash drop stash@{index} # Index will be shown after getting stash list
    

    注意:git stash list 可以让你从 git 的存储区获取索引。

    【讨论】:

    • 值得一提的是,至少对于使用Windows 10的VSCode中的集成终端来说,它是git stash drop 'stash@{index}',带有撇号。
    【解决方案4】:

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

    因为当你放下一个时,所有的存储都会重新编号,这实际上很容易用 while 来完成。删除所有早于 stash@{19} 的存储:

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

    【讨论】:

    • 这是否适用于 Git 2.11 中引入的索引值,您可以使用 git stash pop 3 来引用存储列表中的第三个存储?我想知道我们是否可以使用while 循环并使用索引值删除存储。
    • 我喜欢这个简单、优雅的解决方案!
    【解决方案5】:

    一次性清空所有隐藏物品

        git stash clear
    

    列出所有存储

        git stash list
    

    删除特定的存储

        git stash drop stash@{index}
    

    【讨论】:

      【解决方案6】:

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

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

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

      请参阅https://stackoverflow.com/a/44829516/946850 了解更多详细信息。

      【讨论】:

        【解决方案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
        

        如果你想一次删除所有的存储 -

        > git stash clear
        >
        
        > git stash list
        >
        

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

        【讨论】:

          【解决方案8】:

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

          git stash drop
          

          但是如果你想清除当前 git 仓库的所有 git stash 那么你可以使用

          git stash clear
          

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

          【讨论】:

            【解决方案9】:

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

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

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

            【讨论】:

            • 试试for iterator in `seq 5 8`; git stash drop stash@{$iterator}; done
            • 请注意,当您放下时,剩余的存储空间会向上移动 1 个位置。因此,如果要从 5 删除到 8,则需要倒数或删除 stash@{5} 四次。例如:for i in `seq 4`; do git stash drop 'stash@{5}'; done
            【解决方案10】:

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

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

            【讨论】:

              【解决方案11】:

              如果您使用 VSCode,1.64(2022 年 1 月)将在其命令中包含 git stash clear

              issue 123375commit 302c41c

              "command": "git.stashDropAll",
              

              【讨论】:

                猜你喜欢
                • 2012-04-06
                • 1970-01-01
                • 2015-09-18
                • 1970-01-01
                • 2021-12-30
                • 1970-01-01
                • 2011-01-01
                • 2013-11-01
                • 2014-08-12
                相关资源
                最近更新 更多