*-. 5ec4337 WIP on (no branch): d2b25fd hello world
|\ \
| | * b4b28c3 untracked files on (no branch): d2b25fd hello world
| * ca727e1 index on (no branch): d2b25fd hello world
|/
* d2b25fd hello world
它们的提交消息符合某些模式。存储条目的消息以WIP on $branch:(by git stash) 或On $branch:(by git stash push -m $msg) 开头,后跟简短的 sha1sum 和 的主题parent1。 的消息parent2以 开头index on $branch:,后跟简短的 sha1sum 和 的主题parent1。 的消息parent3也符合模式untracked files on $branch。在分离的 HEAD 上,$branch文字为(no branch)。
存储提交有 2 个父级。假设
parent1
和parent2
也是parent1
的唯一父级parent2
。图表如下,更新:
正如@jthill 指出的那样,
git stash -u
它还会存储未跟踪的文件,头部有第三个父级,parent3
.parent3
是根提交。它们的提交消息符合某些模式。存储条目的消息以
WIP on $branch:
(bygit stash
) 或On $branch:
(bygit stash push -m $msg
) 开头,后跟简短的 sha1sum 和 的主题parent1
。 的消息parent2
以 开头index on $branch:
,后跟简短的 sha1sum 和 的主题parent1
。 的消息parent3
也符合模式untracked files on $branch
。在分离的 HEAD 上,$branch
文字为(no branch)
。我们可以在普通分支上伪造 3 或 4 个具有相同图表和消息的提交,并且头部也可以被使用
git stash apply $commit
。但这在实际日志中并不常见。因此,如果 3 或 4 个提交与图表匹配,并且它们的提交消息与这些模式匹配,则可以将头部视为存储条目。