Git stash似乎做了很多我想做的事情,除了编写脚本有点困难,因为如果你没有更改,那么Git stash;gitstashpop将做一些不同于在存储库中进行更改的事情。

看来git stash create是这个问题的答案,而且一切都有效,除了一件事……我无法摆脱创建的stash。有什么办法把这些东西扔掉吗?

为了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

当前回答

你应该使用

git stash save

而不是

git stash create

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

使用git-stash-save“somecomment”,当您有想要复制/移动到另一个分支的未标记更改时使用

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

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

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

其他回答

你应该使用

git stash save

而不是

git stash create

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

使用git-stash-save“somecomment”,当您有想要复制/移动到另一个分支的未标记更改时使用

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

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

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

处理藏匿物品的最佳方法是,首先检查藏匿物品清单

git stash list

然后确定并确认是否有您的顾虑,然后继续

git stash drop

它会一个接一个地删除隐藏的内容(从顶部开始)

git stash drop <index>

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

但如果你确定列表中没有需要的东西,那就去

git stash clear

它会把它们全部去掉。

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


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

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

由于没有任何内容引用隐藏提交,所以最终会收集垃圾。


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

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

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

它也有效

git stash drop <index>

like

git stash drop 5