如何删除使用git创build的存储创build?

Git存储似乎做了很多我想要的,除了脚本有点难,因为如果你没有变化,然后git stash; git stash pop git stash; git stash pop将做一些不同的,如果你有你的存储库的变化。

看起来git stash create是这个问题的答案,一切正常,除了一件事情…我不能摆脱创build的存储。 有什么办法摆脱藏匿?

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

创build存储:

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

您不需要删除以这种方式创build的存储。 由于没有引用存储提交,它将最终得到垃圾回收。

更新:为了澄清,原来的问题特别要求关于git stash create ,而不是默认的git stash save 。 放下一个典型的藏匿处,看Charles的优秀答案 。

git stash drop带任何参数 – 这将删除顶部的藏匿处或一个隐藏的引用,如下所示: stash@{n}其中n指定哪个隐藏的位置。 你不能传递一个提交ID到git stash drop

我不知道为什么你认为需要放一个藏匿处,因为如果你正在使用stash create一个藏匿入口不是为你的“藏匿处”创build的,所以没有什么可以放下的。

如果你100%确定你只有一个存储(确定git stash list是107%),你可以做一个

 git stash clear 

并忘记它们(它删除所有的窗口)。

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

你应该使用

 git stash save 

并不是

 git stash create 

因为这会创build一个存储(这是一个常规的提交对象)并返回它的对象名称,而不会将存储在ref命名空间的任何位置 。 因此将不能访问存储适用。

使用git stash save "some comment"是用来当您有搁置的变化,你想复制/移动到另一个分支

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

你总是可以使用git stash list来检查你存储的所有索引

并使用git stash drop stash@{0} (假设你保存的存储索引是0,你想删除它)删除一个特定的藏匿处。

从git文档: http : //git-scm.com/docs/git-stash

drop [-q | –quiet] []

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

例:

 git stash drop stash@{5} 

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

 git stash list