如何删除使用git stash create创建的存储?

Pau*_*and 509 git

Git stash似乎做了我想要的很多东西,除了它有点难以编写脚本,因为如果你没有变化,那么git stash; git stash pop将会做一些不同于你的存储库中有变化的东西.

似乎这git stash create就是问题的答案,一切都有效,除了一件事......我无法摆脱所创造的藏匿.有没有办法摆脱藏匿?

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

创建存储:

~/tmp/a(master) $ git stash create 
60629375d0eb12348f9d31933dd348ad0f038435
~/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 --hard
HEAD is now at 555d572 log message
Run Code Online (Sandbox Code Playgroud)

使用藏匿处:

~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: 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
#
Run Code Online (Sandbox Code Playgroud)

删除存储:(除了最后一位不起作用)

~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference
Run Code Online (Sandbox Code Playgroud)

CB *_*ley 815

git stash drop没有参数 - 它丢弃了顶部存储 - 或者一个看起来像的存储引用:stash@{n}n指定哪个存储丢弃.您无法将提交ID传递给git stash drop.

我不确定你为什么认为需要删除存储因为如果你使用stash@{n}的存储条目不是为你的"存储"创建的,所以没有任何东西可以删除.

  • **注意**:您可能不应该丢弃多个,如1,2,3,因为您实际上最终会丢弃原来的数字1,3和5.正确的方法是丢弃1,2和3 ,将以3,2,1或1,1,1的顺序执行它们.此外,它是0索引,0位于堆栈的顶部. (39认同)
  • 如果您在 powershell 中执行此操作,请确保将 stash@{n} 用单引号引起来,否则会出现错误。 (4认同)
  • [来自man](http://man.he.net/man1/git-stash):**create**创建一个存储(这是一个常规提交对象)并返回其对象名称,而不将其存储在ref命名空间. (3认同)
  • 查看git stash的手册页.stash create不会创建一个条目,只有stash的提交对象,所以stash日志中没有条目要删除. (2认同)
  • 当按下"Stash Changes"按钮时,Git Extensions会发出一个未知命令,无论它在退出和重新启动应用程序时是什么都会持续存在.没有明显的方法可以使用GUI来删除存储,但是从命令行"git stash list"显示WIP存储,并且"git stash clear"将其删除. (2认同)

dah*_*byk 316

您无需删除使用创建的存储git stash.来自文档:

创建一个存储条目(这是一个常规提交对象)并返回其对象名称,而不将其存储在ref命名空间中的任何位置.这对脚本非常有用.它可能不是你想要使用的命令; 看上面的"保存".

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


使用git stash dropgit stash drop stash@{n}保存到的存储git stash create,可以删除git stash.与所有Git对象一样,实际的隐藏内容不会从计算机中删除,直到git stash save它们到期后修剪这些对象(默认为2周前).

旧的stashes保存在refs/stash reflog(try git stash drop)中,可以删除gc,refs/stash显示的数字在哪里cat .git/logs/refs/stash.

  • 它没有回答这个名义上的问题.结果,像我这样的人,通过谷歌搜索问题的答案,并不特别关心实际的细节,投票给实际回答的人.有些人还对所接受的答案投了反对票,因为这对他们没有帮助.我个人刚刚赞成了帮助我的答案. (19认同)
  • 所以:1)Google"git delete stash"2)根据问题标题的前半部分点击SO链接3)downvote标题后半部分的正确答案.那是一个新的. (15认同)
  • @ArtOfWarfare那将是缺乏阅读理解,因为这显然是对"名义问题"的回应. (10认同)

Fel*_*ira 208

如果你100%确定你只有一个藏匿(让git stash list107%确定),你可以做一个

git stash clear
Run Code Online (Sandbox Code Playgroud)

并忘掉它们(它会删除所有的藏匿处).

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

  • 如果你只有一个藏匿处,我仍然建议使用`git stash drop`,因为这只会丢掉一个藏匿点,你不必担心损失超过预期. (25认同)
  • 特别是,107%肯定. (12认同)
  • +1因为git拒绝删除存储,因为存储创建的文件之一现在已经存在.. (3认同)
  • 我已经使用藏匿了很长时间了。但是这次,我不能像往常一样简单地使用`git stash drop`来摆脱我的最后一个隐藏。我不确定我做了什么不同的事情。无论如何,`git stash clear`对我有用。不知道它的存在。+1 (2认同)

Jor*_*rge 85

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

drop [-q | --quiet] []

从隐藏列表中删除单个隐藏状态.如果没有给出,则删除最新的一个.ie stash@{0},否则必须是stash @ {}形式的有效存储日志引用.

例:

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

这将删除存储条目5.要查看所有存储列表:

git stash list
Run Code Online (Sandbox Code Playgroud)

  • 除了我明确地在问题的底部说git stash drop不能做我想要的. (4认同)

Sha*_*Sam 70

你应该使用

git stash save
Run Code Online (Sandbox Code Playgroud)

并不是

git stash create
Run Code Online (Sandbox Code Playgroud)

因为这会创建一个存储(它是一个常规的提交对象)并返回其对象名称,而不将其存储在ref命名空间中的任何位置.因此,无法通过存储申请访问.

使用git stash save "some comment"时,你有你想复制不分阶段的变化是使用/移动到另一个分支

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

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

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

  • 仅供参考-只需输入命令git stash即可,默认为git stash save。 (3认同)

Sho*_*lil 60

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

git stash list
Run Code Online (Sandbox Code Playgroud)

然后确定并确认是否存在您所关心的问题,然后继续

git stash drop
Run Code Online (Sandbox Code Playgroud)

它将一一删除存储(从顶部开始)

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

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

但如果您确定该列表中没有任何内容需要,那么就去

git stash clear
Run Code Online (Sandbox Code Playgroud)

它会删除所有这些。


Vin*_*oso 48

仅删除一个存储git stash drop

删除所有存储git stash clear

展示你的藏品git stash show

删除特定的存储,git stash drop indexnumber 例如git stash drop 4


小智 15

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 apply
git stash clear         //clear all your local stashed code
Run Code Online (Sandbox Code Playgroud)


Mon*_*Tea 6

它也有效

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

喜欢

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


Aks*_*hay 6

对于想要从 UI 本身操作 stash 的 VS Code 用户,请使用以下方法:

  1. 确保您已安装GitLens扩展。
  2. 转到源代码管理选项卡。
  3. 检查 STASHES 部分。你会找到你所有的藏品(就像一样git stash list
  4. 对于每个存储,您将分别找到“应用存储”“与 HEAD 比较”“删除存储”的直接按钮。

在此输入图像描述

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

在此输入图像描述