Nem sempre exige dois pais, às vezes exige três.
O diagrama a seguir ilustra o cenário mais simples, com dois pais:
.----S
/ /
-----H----I
Aqui Hrepresenta o seu cabeçalho atual, que é o ramo principal no seu exemplo, e dois commits filhos são criados quando você executa git-stash.
A primeira é I, que representa o índice no momento da ocultação. Em outras palavras, esse commit contém as alterações que foram preparadas antes da armazenagem. Ele tem um único pai, que é o commit que o HEAD apontou. O segundo ( S) é o commit stash, que contém arquivos que foram modificados antes do stash. Possui duas confirmações porque suas alterações podem estar acima daquelas em I e em H, ou seja, elas podem afetar os arquivos que foram preparados ou não.
O outro cenário acontece quando você fornece a -uopção para o stashcomando, que instrui o Git a esconder também arquivos não rastreados. O diagrama agora se torna:
.----S----.
/ / /
-----H----I U
O novo Ucommit possui todas as alterações introduzidas pelos arquivos não rastreados. Observe que não faria sentido que esse commit tivesse pais, pois esses arquivos não existem no momento HEAD. O esconderijo cometer Sagora tem três pais: H, Ie Ue agora ao aplicar o esconderijo cometer Git também irá aplicar as alterações untracked.
Você pode ver esses diagramas e as diferenças claramente executando algo como git log --graph stash@{0}ou gitk stash@{0}.