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}
的存储条目不是为你的"存储"创建的,所以没有任何东西可以删除.
dah*_*byk 316
您无需删除使用创建的存储git stash
.来自文档:
创建一个存储条目(这是一个常规提交对象)并返回其对象名称,而不将其存储在ref命名空间中的任何位置.这对脚本非常有用.它可能不是你想要使用的命令; 看上面的"保存".
由于没有引用存储提交,它最终会被垃圾收集.
使用git stash drop
或git 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
.
Fel*_*ira 208
如果你100%确定你只有一个藏匿(让git stash list
107%确定),你可以做一个
git stash clear
Run Code Online (Sandbox Code Playgroud)
并忘掉它们(它会删除所有的藏匿处).
注意:为那些最终在这里寻找清除它们的方法(像我一样)的人添加了这个答案.
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)
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并且您想删除它)以删除特定的存储.
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)
它也有效
git stash drop <index>
Run Code Online (Sandbox Code Playgroud)
喜欢
git stash drop 5
Run Code Online (Sandbox Code Playgroud)