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

时间:2011-04-20 21:43:46

标签: 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

使用藏匿处:

~/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
#

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

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

10 个答案:

答案 0 :(得分:782)

git stash drop没有参数 - 它会删除顶部存储 - 或者一个隐藏引用,它看起来像stash@{n}n指定哪个存储丢弃。您无法将提交ID传递给git stash drop

我不确定你为什么认为需要删除存储因为如果你使用stash create没有为你的“存储”创建一个存储条目,所以没有任何东西可以删除。

答案 1 :(得分:255)

您无需删除使用git stash create创建的藏匿处。来自文档:

  

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

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


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

较旧的藏匿处保存在refs/stash reflog(尝试cat .git/logs/refs/stash)中,可以使用git stash drop stash@{n}删除,其中n是显示的数字git stash list

答案 2 :(得分:193)

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

git stash clear

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

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

答案 3 :(得分:81)

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

  

drop [-q | --quiet] []

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

示例:

git stash drop stash@{5}

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

git stash list

答案 4 :(得分:70)

您应该使用

git stash save

而不是

git stash create

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

如果您想要复制/移动到另一个分支上的非分段更改,则使用git stash save "some comment"

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

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

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

答案 5 :(得分:5)

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

答案 6 :(得分:2)

只删除一个 stash git stash drop

删除所有隐藏git stash clear

显示您的藏品 git stash show

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

答案 7 :(得分:0)

也可以

git stash drop <index>

喜欢

git stash drop 5

答案 8 :(得分:0)

文档在这里(中文)please click.

您可以使用

  

git存储列表

     

git stash drop stash @ {0}

enter image description here

答案 9 :(得分:0)

清除Git藏匿处将清除完整藏匿处,

cmd:清除git隐藏

如果要删除带有存储索引的特定存储,可以使用该放置。

cmd:git隐藏4

(4是存储ID或存储索引)