Skip to main content

Що робить git checkout <commit>?

Команда git checkout <commit> перемикає робочу директорію і HEAD на вказаний коміт, тобто Git завантажує стан проекту таким, яким він був у цьому коміті.

Простіше: ти «повертаєшся в часі» і дивишся код на обраному кроці історії.


Що саме відбувається при git checkout <commit>

Коли ти виконуєш:

bash
git checkout a1b2c3d

Git робить три речі:

  1. HEAD починає вказувати напряму на цей коміт
  2. Файли в робочій директорії замінюються на версії з цього коміту
  3. Ти опиняєшся в стані detached HEAD

Схема:

HEAD → коміт a1b2c3d

Важливо: ти більше не на гілці

До команди:

HEAD → main → останній коміт

Після:

HEAD → конкретний коміт

Це ключовий момент для співбесіди.


Що можна робити в цьому стані

У стані detached HEAD можна:

  • переглядати код
  • запускати проект
  • аналізувати баг
  • порівнювати версії

Небезпечно:

  • робити коміти і не створювати гілку (їх легко втратити при перемиканні назад)

Як безпечно продовжити роботу

Якщо після checkout ти зрозумів, що хочеш правити код:

bash
git switch -c new-branch

Так ти:

  • створиш гілку
  • «прикріпиш» зміни до історії

Чого git checkout <commit> НЕ робить

не видаляє коміти не змінює історію не відкочує гілку назад

Він лише переміщує HEAD і робочий стан.


Часта плутанина на співбесіді

«checkout відкочує проект» - неправильно checkout перемикає стан, а відкат - це git reset або git revert.


Коротка відповідь для співбесіди

git checkout <commit> перемикає HEAD і робочу директорію на вказаний коміт. При цьому HEAD відʼєднується від гілки (detached HEAD), і ми бачимо стан проекту на момент цього коміту, не змінюючи історію.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.