Как именно git checkout влияет на коммиты и тайники? - PullRequest
1 голос
/ 29 сентября 2010

Я не нахожу свой ответ в онлайн-гите.

Понятно, что 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?

1 Ответ

0 голосов
/ 29 сентября 2010

Коммит не ссылается на дочерний элемент, только на родительский. И более одного ребенка могут иметь одного и того же родителя.

...