Ветка из конкретного коммита git

Иногда бывает так: лезешь в историю, находишь нужный коммит — то ли баг там ещё не был завезён, то ли фича работала как надо — и хочешь от него ответвиться. Не от текущего HEAD, а именно от той точки. Задача простая, но вспоминается не сразу, поэтому записываю.

Самый короткий путь

Если нужно создать ветку и сразу на неё перейти:

Всё. HEAD новой ветки будет смотреть ровно на этот коммит, вы на ней, можно работать.

Раньше все привыкли к checkout, и он всё ещё работает:

Разницы по результату никакой, просто switch появился позже именно для таких операций и читается понятнее.

Если переключаться пока не хочется

Бывает, что ветку надо просто завести

Ветка создана, вы остаётесь там же, где были. Дальше уже git switch имя-ветки, когда понадобится.

Про сам хеш

<commit-id> — это может быть как полный хеш из сорока символов, так и сокращённый. Обычно хватает семи-восьми символов, главное чтобы он был однозначным. Если вдруг git ругнётся на неоднозначность — просто добавьте пару символов.

Отдельный случай: вы уже в detached HEAD

Частая ситуация. Вы сделали git checkout <commit-id> (без -b), посмотрели, что там внутри, и решили, что от этого места надо строить ветку. Тогда хеш уже не нужен — вы и так на нём:

И всё. Ветка создастся от текущего положения HEAD, а он у вас как раз на нужном коммите.

Пара моментов, которые стоит держать в голове

Новая ветка будет содержать историю до указанного коммита включительно. Всё, что было закоммичено позже, в неё не попадёт — она как бы отрезана от основной линии в этой точке. Это обычно и нужно, но полезно помнить.

Мало букафф? Читайте есчо !

Создание патча для модуля Drupal

Декабрь 4, 2017 г.

В Drupal для решения ваших задач вы подбираете contributed модули. Отлично, если модуль поддерживается автором, в нем нет багов и есть нужный вам функционал. В противном случае, вы, возможно, правите модуль и используете его для себя. Но, наверное, было ...

Читать

GIT workflow или как работать с проектом

Апрель 2, 2024 г.

Как использовать GIT, может зависеть от многих факторов, например как проходит тестирование, работает ли целая команда над проектом или один разработчик соло. Соло разработка Концепция работы с GIT в случае одного разработчика сводится обычно ...

Читать

Как обновить ветку в Git без переключения на неё

Май 1, 2026 г.

Предположим, вы работаете в ветке feature, а коллеги обновили master. Вам нужно подтянуть свежие изменения в локальный master, но не хочется терять контекст и переключаться туда-обратно. Стандартный git pull работает только с текущей веткой. Что делать? ...

Читать

Удалить новые (untracked) файлы в git

Июль 31, 2024 г.

Иногда нужно избавиться от новых (лишних) файлов, привожу примеры команд. Если это случается регулярно, в процессе компиляции, сборки, у вас создаются файлы, которые вы не будете включать в commit, то, наверное, стоит подумать и включить их в настройки ...

Читать
 

Комментарии к «Ветка из конкретного коммита git»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: