`git reset stash` 的语义是什么?

5
今天,我无意中输入了git reset stash命令,它对我的最近历史记录做了一些非常奇怪的事情。看起来至少删除了最新的提交,并添加了两个其他提交,一个是索引,一个是stash本身。
我查看了man git-reset,但没有找到有关这种行为的描述。
这个命令的预期语义是什么?有没有文档记录?
1个回答

4

stash是git认可的最新存储的提交所对应的引用 - 尝试使用git rev-parse stashcat .git/refs/stash,会打印出提交SHA。

因此,git reset stash的作用与任何git reset <branch/tag/commit>相同:将当前分支重置为指定提交,保留原始和新提交之间的差异为待处理更改。(而stash由两个提交组成,正如您所说的包含索引和工作目录的更改。)


2
完全没有意识到暂存区也是秘密提交! 感谢今天的额外收获! - merlin2011
3
请注意,储藏(commit)提交(即名称为“stash”的提交)从技术上讲是一个合并提交(merge commit),因为它有两个父级(parents),但它的工作方式不像普通的合并提交(merge commit),因此Git的其他部分会显示它的奇怪。将分支名称指向那里并不是一个好主意。 :-) - torek
@torek 的建议很好:请尽快重置回您的原始提交;-) - Aasmund Eldhuset

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接