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
答案 0 :(得分:782)
git stash drop
没有参数 - 它会删除顶部存储 - 或者一个隐藏引用,它看起来像stash@{n}
,n
指定哪个存储丢弃。您无法将提交ID传递给git stash drop
。
我不确定你为什么认为需要删除存储因为如果你使用stash create
没有为你的“存储”创建一个存储条目,所以没有任何东西可以删除。
答案 1 :(得分:255)
您无需删除使用git stash create
创建的藏匿处。来自文档:
创建一个存储条目(这是一个常规提交对象)并返回其对象名称,而不将其存储在ref命名空间中的任何位置。这对脚本非常有用。它可能不是你想要使用的命令;见上面的“保存”。
由于没有引用存储提交,最终会收集垃圾。
使用git stash
或git 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)
答案 9 :(得分:0)
清除Git藏匿处将清除完整藏匿处,
cmd:清除git隐藏
如果要删除带有存储索引的特定存储,可以使用该放置。
cmd:git隐藏4
(4是存储ID或存储索引)