如何删除使用git stash make创建的stash?

Git stash似乎做了很多我想要的事情,除了它有点难以编写脚本,就像如果您没有更改,那么git stash; git stash pop将做一些与您的存储库中确实有更改不同的事情。

看来git stash create是这个问题的答案,一切都有效,除了一件事…我无法摆脱创建的隐藏。有什么方法可以摆脱隐藏吗?

为了100%清楚我在做什么:

创建stash:

~/tmp/a(master) $ git stash create60629375d0eb12348f9d31933dd348ad0f038435~/tmp/a(master) $ git st# On branch master# Changes to be committed:#   (use "git reset HEAD <file>..." to unstage)##   new file:   b#~/tmp/a(master) $ git reset --hardHEAD is now at 555d572 log message

使用stash:

~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435# On branch master# Changes to be committed:#   (use "git reset HEAD <file>..." to unstage)##   new file:   b#

删除stash:(除了最后一点不起作用)

~/tmp/a(master) $ git stash drop !$git stash drop 60629375d0eb12348f9d31933dd348ad0f038435'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference
730383 次浏览

git stash drop不接受参数-它会删除顶部存储-或者一个类似于:stash@{n}的存储引用,n指定要删除的存储。您不能将提交ID传递给git stash drop

git stash drop            # drop top hash, stash@{0}git stash drop stash@{n}  # drop specific stash - see git stash list

删除一个藏匿将改变stash@{n}所有藏匿的指定进一步向下堆栈。

我不知道为什么你认为需要删除一个藏匿,因为如果你使用的是stash create,则不会为你的“藏匿”创建一个藏匿条目,因此没有任何东西可以删除。

要删除使用git stash创建的普通存储,您需要git stash dropgit stash drop stash@{n}。有关更多详细信息,请参阅下面。


您不需要删除使用git stash create创建的存储。从文档中:

创建一个stash条目(这是一个常规提交对象)并返回其对象名称,而不将其存储在ref命名空间的任何位置。这对脚本很有用。它可能不是您要使用的命令;请参阅上面的“保存”。

由于没有引用存储提交,它最终会被垃圾收集。


使用git stashgit stash save创建的stash保存到refs/stash,并且可以使用git stash drop删除。与所有Git对象一样,实际的stash内容不会从您的计算机中删除,直到gc在这些对象过期后修剪它们(默认为2周后)。

较旧的存储保存在refs/stash重排(尝试cat .git/logs/refs/stash)中,可以使用git stash drop stash@{n}删除,其中ngit stash list显示的数字。

你应该用

git stash save

而不是

git stash create

因为这会创建一个stash(这是一个常规提交对象)并返回其对象名称,而ref命名空间中没有放在任何地方。因此,stash应用程序无法访问。

使用git stash save "some comment"是当你有未分阶段的更改你想复制/移动到另一个分支

使用git stash apply stash@{0}(假设您保存的存储索引为0)当您希望您保存的(存储的)更改反映在您的当前分支上时

您始终可以使用git stash list来检查所有存储索引

并使用git stash drop stash@{0}(假设您保存的存储索引为0并且您想删除它)来删除特定的存储。

如果你100%确定你只有一个藏品或者你想删除所有的存储(做一个git stash list是107%确定),你可以这样做:

git stash clear

…并忘记它们(它删除所有藏匿)。

注意:为那些最终在这里寻找清除它们的方法的人(像我一样)添加了这个答案。

来自git doc:http://git-scm.com/docs/git-stash

Drop[-q|--安静][]

从存储列表中删除单个存储状态。当给出否时,它会删除最新的状态。即stash@{0},否则必须是stash@{}形式的有效存储日志引用。

例子:

git stash drop stash@{5}

这将删除藏匿条目5。要查看所有藏匿列表:

git stash list

它也有效

git stash drop <index>

喜欢

git stash drop 5

文件在这里(中文)请按。

您可以使用

git存储列表

删除git stash@{0}

在此处输入图片描述

git stash           // create stash,git stash push -m "message" // create stash with msg,git stash apply         // to apply stash,git stash apply indexno // to apply  specific stash,git stash list          //list stash,git stash drop indexno      //to delete stash,git stash pop indexno,git stash pop = stash drop + stash applygit stash clear         //clear all your local stashed code

清除Git stash将清除完整的stash,

cmd: git stash的相关文档

如果您想使用存储索引删除特定的存储,您可以使用删除。

cmd: git stash drop 3//删除文件

(4是stash id或stash index)

只删除一个藏匿git stash drop

删除所有隐藏git stash clear

展示你的收藏git stash show

删除特定的藏匿git stash drop indexnumber例如git stash drop 4

git存储列表

git stash drop1

输入图片描述

处理藏匿物的最佳方法,首先检查藏匿物的列表

git stash list

然后识别并确认是否有你所关心的藏匿处,然后

git stash drop

它会一个接一个地删除藏品(从顶部开始)

git stash drop <index>

它将删除特定索引即5上的存储

但如果你确定清单上没有什么需要的,那就去

git stash clear

它会删除所有的他们。

对于想要从UI本身操作藏匿的VS Code用户,请使用此方法:

  1. 确保您已安装GitLens扩展。
  2. 转到源代码控制选项卡。
  3. 检查STASHES部分。你会找到你所有的藏品(和git stash list一样)
  4. 你会发现直接按钮应用Stash与HEAD比较删除Stash分别为每个藏匿。

输入图片描述

  1. 要删除特定的存储,请单击删除存储按钮并确认删除(删除)它。

输入图片描述