Я не нахожу свой ответ в онлайн-гите.
Понятно, что git checkout разрушителен в том смысле, что он отбрасывает локальные модификации, но также он разрушает коммиты, изменяя структуру дерева? Например, скажем, у меня есть три коммита
a <-- b <-- c
|
HEAD
+ stash c
и HEAD в настоящее время на c, и я спрятал все незафиксированные изменения.
Если бы я делал "git checkout HEAD ^", я бы наивно ожидал, что это перенесет меня с одной головы на другую, т.е. состояние дерева должно быть:
a <-- b <-- c
|
HEAD
+ stash b
где "stash b" - это то, что было спрятано при коммите b.
Но из моих экспериментов видно, что реальный результат -
a <-- b
|
HEAD
+ stash b
т.е. commit c "удален" из дерева или, по крайней мере, не отображается в "git log".
Я правильно понял? Ответ на этот вопрос очевиден из руководств по git?