Git Stash疑问:为何最旧存储条目是stash@{1}而非stash@{0}?
Git stash索引顺序的常见误区
核心原因:Git stash的索引是倒序排列的
Git里的stash@{n}索引规则和直觉相反:
stash@{0}是最新创建的存储条目,也就是最后一次执行git stash生成的内容- 索引数字越大,对应的stash创建时间越早,
stash@{1}就是比stash@{0}更早(也就是你所说的「最旧」)的存储条目
结合你的场景分析
题目要求「调用最旧的Git stash且保留该存储条目」,先明确两个关键点:
- 保留条目:必须用
git stash apply命令,因为git stash pop会在应用后删除对应的stash条目,所以选项3、4直接排除 - 最旧的stash:根据索引规则,你的stash列表里
stash@{1}是更早创建的那个,所以正确命令是git stash apply stash@{1}(选项2)
而你选的stash@{0}是最新的stash,这就是选错的核心原因。
补充说明:执行git stash list时,输出的结果默认是按创建时间从新到旧排序的,最上方的条目就是最新的stash@{0},越往下的条目索引数字越大,创建时间越久。
内容的提问来源于stack exchange,提问作者Kavita Kulkarni
相关产品推荐
相关产品推荐

