首页 > 解决方案 > git apply stash 没有索引号

问题描述

有没有一种方法可以使用它的名称来应用存储?我得到了如下的存储列表,我想申请 stash@{0}。

stash@{0}: On support.1.5: NoGoMod
stash@{1}: On feature/WORK-7929: 6Aug
stash@{2}: On support.1.5: 17Jul
stash@{3}: On WORK-7739: temp

我可以用它的索引号(如(git stash apply "stash@{0}"))应用它,但是有没有办法可以用它的名字应用它......例如。git stash apply "stash@{NoGoMod}" 或类似的东西?

我面临的问题是索引号随着我创建的每个新存储而变化。因此,如果添加了新的存储,列表将如下所示

stash@{0}: On support.1.5: NewStash
stash@{1}: On support.1.5: NoGoMod
stash@{2}: On feature/WORK-7929: 6Aug
stash@{3}: On support.1.5: 17Jul
stash@{4}: On WORK-7739: temp

如果 stash 不能用它的名字应用,那么有什么办法可以保持它的索引号不变?有没有一种方法可以将新的存储添加到列表底部并且我现有的存储索引号不会改变?

感谢期待

标签: git

解决方案


存储列表是一个stack。这意味着每个新的存储都被“推”到堆栈上。所以不,没有办法阻止编号更改;根据堆栈的定义,最近的存储始终为零。

存储没有“名称”,就像您在提交中包含的消息是它的“名称”一样。如果分支或标签恰好指向它,则提交由名称唯一标识;否则,它由其 SHA 标识号标识。类似地,存储堆栈中的存储由其在堆栈中的位置标识。

(我很想补充:如果你不喜欢,不要使用 stash。在我看来,stash 是魔鬼的工作。它们不应该用于临时存储分支的状态;也就是说提交的用途。如果您想说“保留我的位置”,请创建一个临时分支并提交。现在您有了一个可以随时返回的名称。存储仅用于索引与索引不同的紧急情况工作树并且没有时间解决这个问题,因此您需要将工作树的状态与索引分开保存。)


推荐阅读