Что такое git checkout

Git checkout

Переключение веток аналогично переключению старых коммитов и файлов, в которых рабочий каталог обновляется в соответствии с выбранной веткой/ревизией; вместе с тем новые изменения сохраняются в истории проекта, то есть это не просто операция чтения.

Переключение веток

Наличие выделенной ветки для каждой новой функции сильно отличается от традиционного рабочего процесса в SVN. Это значительно облегчает проведение новых экспериментов без страха разрушить существующую функциональность и позволяет одновременно работать со множеством несвязанных функций. Кроме того, ветки облегчают ведение нескольких совместных рабочих процессов.

Использование: существующие ветки

В вышеприведенном примере показано, как просмотреть список доступных веток с помощью команды git branch и переключиться на конкретную ветку (в данном случае — на ветку feature_inprogress_branch ).

Новые ветки

Переключение веток

Переключение на удаленную ветку

При совместной работе команды нередко используют удаленные репозитории. Такие репозитории могут размещаться на сервере с предоставлением общего доступа либо это может быть локальная копия другого коллеги. Каждый удаленный репозиторий содержит собственный набор веток. Для переключения на удаленную ветку нужно сначала извлечь содержимое этой ветки.

В современных версиях Git переключение на удаленную ветку не отличается от переключения на локальную ветку.

В старых версиях Git необходимо создавать новую ветку на основе удаленного репозитория ( remote ).

Кроме того, можно переключиться на новую локальную ветку и сбросить ее до последнего коммита удаленной ветки.

Открепленные указатели HEAD

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Резюме

Готовы попробовать ветвление?

Ознакомьтесь с этим интерактивным обучающим руководством.

Источник

Машина времени в git

В последнее время мои коллеги начинают знакомство с git’ом. И один из интересующих их вопросов — как откатиться до определённой ревизии. В интернете можно найти набор команд, но хочется, чтобы было понимание каждой из них. Баловство с комадами git’а без понимания может привести к потере истории разработки.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Здесь кружочками обозначены коммиты. Чем правее коммит, тем он новее. Коммит с хэшем 6e04e..-это самый первый коммит. Одно из основных понятий, которое стоит уяснить себе новичку, — это указатели на коммиты, а точнее некоторое «прозвище» того или иного коммита. Их тьма тьмущая, например: HEAD, master, FETCH_HEAD, ORIG_HEAD и т.д. Это я перечислил крупицу стандартных прозвищ. Их можно создавать и самим, но об этом впереди.

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

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Перенос указателя HEAD ( git checkout )

Откат по истории коммитов:

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Неужели мы потеряли всю историю? Как узнать самый «новый» коммит? Это не проблема — есть выход, и их несколько:

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Для прояснения механизма git checkout создадим новую ветку devel:

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Заметим, что указатель HEAD указывает на вершину ветки devel.

Породим в новой ветке несколько коммитов. История репозитория будет выглядеть следующим образом:

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Возвращение в ветку master происходит также безболезненно:

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

2 :
Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

2 :
Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

ORIG_HEAD полезен для редактирования неверных коммитов на локальной машине (!). Предположим, что мы хотим объединить два последних коммита в единый. Для этого, сохраняя текущее состояние файлов, переводим указатель master на два коммита назад:

Посмотрим на изменения:

Ну а теперь сделаем трюк — объединяем коммиты

Вводим сообщение, сохраняемся. Теперь наша история выглядит вот так:

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Важное замечание — ORIG_HEAD по-прежнему указывает на коммит d79fb… Если мы сейчас выполним команду git checkout ORIG_HEAD, то мы получим так называемое состояние detach HEAD. Оно характеризуется тем, что HEAD указывает не на вершину ветки, а просто на коммит. HEAD всегда должен указывать только на вершину какой-либо ветки!

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Удачных вам путешествий по истории своего репозитория!

При подготовке материала использовались следующие источники:
Самый лучший manual — книга: ProGit
Наглядная справка по git: A Visual Git Reference (Русская версия)

UPD:
В комментариях посоветовали ещё один полезный ресурс по git`у: githowto

Источник

Git: наглядная справка

Если вы не видите иллюстраций, попробуйте переключиться на версию со стандартными картинками (без SVG).

SVG изображения были отключены. (Включить SVG изображения)

На этой странице представлена краткая наглядная справка для наиболее часто используемых команд git. Если у вас уже есть небольшой опыт работы с git, эта страница поможет вам закрепить ваши знания. Если вам интересно, как был создан этот сайт, загляните на мой репозиторий на GitHub.

Содержание

Основные команды

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Следующие четыре команды предназначены для копирования файлов между рабочей директорией, сценой, также известной как «индекс», и историей, представленной в форме коммитов.

Также можно перепрыгнуть через сцену и сразу же получить файлы из истории прямо в рабочую директорию или сделать коммит, минуя сцену.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Соглашения

Иллюстрации в этой справке выдержаны в единой цветовой схеме.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Коммиты раскрашены зелёным цветом и подписаны 5-ти буквенными идентификаторами. Каждый коммит указывает на своего родителя зелёной стрелочкой. Ветки раскрашены оранжевым цветом; ветки указывают на коммиты. Специальная ссылка HEAD указывает на текущую ветку. На иллюстрации вы можете увидеть последние пять коммитов. Самый последний коммит имеет хеш ed489. main (текущая ветка) указывает на этот коммит, stable (другая ветка) указывает на предка main-ового коммита.

Подробно о командах

Есть много способов посмотреть изменения между коммитами. Ниже вы увидите несколько простых примеров. К каждой из этих команд можно добавить имена файлов в качестве дополнительного аргумента. Так мы выведем информацию об изменениях только для перечисленных файлов.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Commit

Когда вы делаете коммит, git создаёт новый объект коммита, используя файлы со сцены, а текущей коммит становится родителем для нового. После этого указатель текущей ветки перемещается на новый коммит. Вы это видите на картинке, где main — это текущая ветка. До совершения коммита main указывал на коммит ed489. После добавления нового коммита f0cec, родителем которого стал ed489, указатель ветки main был перемещён на новый коммит.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

То же самое происходит, если одна ветка является предком другой ветки. Ниже показан пример нового коммита 1800b в ветке stable, которая является предком ветки main. После этого ветка stable уже больше не является предком ветки main. И в случае необходимости объединения работы, проделанной в этих разделённых ветках, вам следует воспользоваться командой merge (что более предпочтительно) или rebase.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Четвертый случай коммита из состояния «detached HEAD» будет рассмотрен далее.

Checkout

Команда checkout используется для копирования файлов из истории или сцены в рабочую директорию. Также она может использоваться для переключения между ветками.

foo.c копирует файл foo.c из коммита HEAD

(предка текущего коммита) в рабочую директорию и на сцену. Если имя коммита не указано, то файл будет скопирован со сцены в рабочую директорию. Обратите внимание на то, что при выполнении команды checkout позиция указателя текущей ветки (HEAD) остаётся прежней, указатель никуда не перемещается.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

В том случае, если мы не указываем имя файла, но указываем имя локальной ветки, то указатель HEAD будет перемещён на эту ветку, то есть мы переключимся на эту ветку. При этом сцена и рабочая директория будут приведены в соответствие с этим коммитом. Любой файл, который присутствует в новом коммите (a47c3 ниже), будет скопирован из истории; любой файл, который был в старом коммите (ed489), но отсутствует в новом, будет удалён; любой файл, который не записан ни в одном коммите, будет проигнорирован.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

В том случае, если мы не указываем имя файла, и не указываем имя локальной ветки, а указываем тег, дистанционную (remote) ветку, SHA-1 хеш коммита или что-то вроде main

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Коммит из состояния «Detached HEAD»

Когда мы находимся в состоянии оторванной головы (Detached HEAD), коммит совершается по тем же правилам, что и обычно, за исключением одной маленькой особенности: ни один указатель ветки не будет изменён или добавлен к новому коммиту. Вы можете представить эту ситуацию как работу с анонимной веткой.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Если после такого коммита вы переключитесь в ветку main, то коммит 2eecb, совершённый из состояния «Detached HEAD», потеряется и попросту будет уничтожен очередной сборкой мусора только потому, что нет ни одного объекта, который бы на него ссылался: ни ветки, ни тега.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Reset

Команда reset перемещает указатель текущей ветки в другую позицию и дополнительно может обновить сцену и рабочую директорию. Эту команду можно также использовать для того, чтобы скопировать файл из истории на сцену, не задевая рабочую директорию.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Merge

Команда merge (слияние) создает новый коммит на основе текущего коммита, применяя изменения других коммитов. Перед слиянием сцена должна быть приведена в соответствие с текущим коммитом. Самый простой случай слияния — это когда другой коммит является предком текущего коммита: в этом случае ничего не происходит. Другой простой случай слияния — когда текущий коммит является предком другого коммита: в этом случае происходит быстрая перемотка (fast-forward). Ссылка текущей ветки будет просто перемещена на новый коммит, а сцена и рабочая директория будут приведены в соответствие с новым коммитом.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Во всех других случаях выполняется «настоящее» слияние. Вы можете изменить стратегию слияния, но по умолчанию будет выполнено «рекурсивное» слияние, для которого будет взят текущий коммит (ed489 ниже на схеме), другой коммит (33104) и их общий предок (b325c); и для этих трех коммитов будет выполнено трёхстороннее слияние. Результат этого слияния будет записан в рабочую директорию и на сцену, и будет добавлен результирующий коммит со вторым родителем (33104).

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Cherry Pick

Команда cherry-pick («вишенка в тортике») создаёт новый коммит на основе только одного сладкого «коммита-вишенки», применив все его изменения и сообщение.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Rebase

Перебазирование (rebase) — это альтернатива слиянию для задач объединения нескольких веток. Если слияние создаёт новый коммит с двумя родителями, оставляя нелинейную историю, то перебазирование применяет все коммиты один за одним из одной ветки в другую, оставляя за собой линейную историю коммитов. По сути это автоматическое выполнение нескольких команд cherry-pick подряд.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

На схеме выше вы видите как команда берёт все коммиты, которые есть в ветке topic, но отсутствуют в ветке main (коммиты 169a6 and 2c33a), и воспроизводит их в ветке main. Затем указатель ветки перемещается на новое место. Следует заметить, что старые коммиты будут уничтожены сборщиком мусора, если на них уже ничего не будет ссылаться.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Технические заметки

Содержание файлов не хранится в индексе (.git/index) или в объектах коммитов. Правильнее было бы сказать, что каждый файл хранится в базе данных объектов (.git/objects) в двоичном представлении; найти этот файл можно по его SHA-1 хешу. В файле индекса записаны имена файлов, их хеши и дополнительная информация. В информации о коммитах вы встретите тип данных дерево, для идентификации которого также используется SHA-1 хеш. Деревья описывают директории в рабочей директории, а также содержат информацию о других деревьях и файлах, принадлежащих обозначенному дереву. Каждый коммит хранит идентификатор своего верхнего дерева, которое содержит все файлы и другие деревья, изменённые в этом коммите.

Copyright © 2010, Mark Lodato. Russian translation © 2012, Alex Sychev.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout Это произведение доступно по лицензии Creative Commons Attribution-NonCommercial-ShareAlike (Атрибуция — Некоммерческое использование — С сохранением условий) 3.0 США.

Источник

Сравнение 5 команд Git: revert, checkout, reset, merge и rebase

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

revert, checkout, reset

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

git revert

Команда git revert – безопасный способ отменить операцию без потери истории коммитов. Команда отменяет действия прошлых коммитов, создавая новый, содержащий все отменённые изменения. Эта команда полезна, когда вы уже запушили изменения в удаленный репозиторий, так как она сохраняет нетронутым исходный коммит.

Откатиться с помощью commit-хэшей:

Можно и с помощью диапазонов :

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkoutДействие git revert

git checkout

Универсальный инструмент git checkout позволяет переключаться между ветками, проверять старые коммиты и отменять локальные незакоммиченные изменения, переключая HEAD и изменяя рабочий каталог.

Для переключения между ветками:

Для проверки более старого коммита с помощью хэша:

Чтобы проверить более старый коммит, используя диапазоны:

Чтобы отменить все локальные незакоммиченные изменения:

Чтобы отменить определенное локальное незакоммиченное изменение:

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkoutДействие git checkout

git reset

Команда git reset – это мощный способ отменить операцию. Существует три возможных аргумента:

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkoutДействие git reset

merge vs rebase

Когда над проектом работает несколько человек, в какой-то момент нужно объединить код. Команды rebase и merge имеют разные подходы для консолидации изменений из одной ветви в другую.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkoutСравнение merge и rebase

git merge

Чтобы объединить последние изменения из master в вашу ветку:

git rebase

Команда git rebase перемещает историю всей ветки поверх другой, переписывая историю проекта новыми коммитами.

Команда полезна, если вы предпочитаете чистую и линейную историю проекта. Однако перестроить изменения, перенесенные в главную ветку удаленного репозитория небезопасно, т. к. вы будете изменять историю главной ветви, в то время как члены вашей команды будут продолжать работать над ней.

Заключение

Источник

Git. Урок 3.
Ветвление. Создание, переключение и удаление веток. Команды: branch, checkout, status, log, diff.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

1. Что такое ветка.
2. Зачем нужны ветки.
3. Создание новых веток.
4. Просмотр списка веток.
5. Переключение между ветками.
6. Просмотр состояния ветки. Команды: git status, git log, git diff.
6.1. Просмотр состояния файлов ветки. Команда git status.
6.2. Просмотр истории коммитов ветки. Команда git log.
6.3. Просмотр различий между коммитами. Команда git diff.
7. Удаление веток.

Дадим два определения ветки: на логическом и физическом уровнях.

1. Логический уровень.
С точки зрения логики, ветка – это последовательность коммитов. Чтобы проще было понять, что такое ветка, рассматривайте ее как некоторую временную шкалу. Коммиты в ней – снимки интересных моментов, идущие друг за другом в хронологической последовательности. Рисунок ниже поможет вам в интуитивном представлении.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

2. Физический уровень
На физическом уровне, то есть с точки зрения внутренней реализации Git, ветка – это ссылка на последний коммит в этой ветке. Картинка ниже поможет вам понять, что к чему.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Преимущество веток в их независимости. Вы можете вносить изменения в файлы в одной ветке, например, пробовать новую функцию, и они никак не скажутся на файлах в другой ветке. Изначально в репозитории одна ветка, но позже мы рассмотрим, как создавать другие.

На самом деле, вначале, когда мы делаем свой первый коммит, Git автоматически создает основную ветку. Вы можете помнить, что ее имя по умолчанию «main» мы задавали в настройках Git в предыдущем уроке. Каждый раз, когда мы создаем новый коммит, Git автоматически перемещает указатель main на последний коммит. Тем не менее, в следующем уроке мы узнаем, как перемещать указатель ветки между коммитами самостоятельно.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Пока мы разбирались, что такое ветка, у вас мог возникнуть вопрос: зачем нужны такие сложности, ведь можно просто делать коммиты и откатывать изменения, когда нужно.

Дело в том, что Git – универсальная система контроля версий: она подходит и большим командам крупных корпораций, и индивидуальным разработчикам для их личных проектов.

Если вы работаете один – скорее всего вы будете редко использовать ветки, но если вы работаете в большой компании, без веток вам не обойтись.

Итак, чаще всего ветки используются в следующих случаях.

Способ 1. Команды git branch + git checkout

Команда git branch

На самом деле, git branch – очень мощная команда, которая умеет много всего. Сейчас мы рассматриваем ее как инструмент для создания веток. Ниже мы рассмотрим еще некоторые способы ее применения.

Команда git checkout

40 шестнадцатеричных цифр в файле выше и есть хэш последнего коммита, на который указывает новосозданная ветка.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

С помощью команд git branch и git checkout вы можете создать неограниченное количество веток и переключаться между ними по мере необходимости. Обычно если ветка вам больше не нужна, ее сливают с основной и удаляют. Тема слияния веток заслуживает отдельного урока, поэтому про это мы поговорим в следующий раз, а удаление веток рассмотрим чуть ниже.

Команда git branch

# Теперь выведем только локальные ветки
$ git branch
* develop
feature
main

Теперь, когда мы поняли, как можно узнать имена веток в репозитории, давайте научимся переключаться между ними.

Команда git checkout

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

Шаг 1. Проверка существования ветки

Нужен этот этап, чтобы случайно не переключиться на ветку, которой не существует. Чтобы понять, как происходит этот процесс, нужно сделать небольшое отступление и рассказать, как вообще Git хранит информацию о существующих ветках.

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Шаг 2. Переключение HEAD на нужную ветку

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Шаг 3. Изменение рабочей копии

У внимательного читателя мог возникнуть вопрос: почему файлы в рабочей копии подгружаются именно из последнего коммита ветки? Что если до переключения с данной ветки, в ней были какие-то изменения, еще не добавленные в коммит? Что с ними будет? Ответ довольно прост. Согласно трем шагам, указанным выше, Git просто проигнорирует все такие файлы. То есть они останутся в вашей рабочей копии в том же состоянии, в котором и были до этого. Как правило, такое поведение очень неудобно, поскольку позволяет легко запутаться в структуре собственного проекта. Представьте: у вас два параллельных релиза, а вы, переключаясь между ветками, случайно занесли файлы одного релиза в ветку другого.

6.1. Просмотр состояния файлов ветки. Команда git status.

6.2. Просмотр истории коммитов ветки. Команда git log.

Команда git log

-p
Показывает изменения, сделанные в данном коммите.

—graph
Рисует ASCII-граф взаимосвязи коммитов.

—all
Выводит историю всех имеющихся коммитов на всех ветках.

adding complex algebra project

commit 603def20e5da2d512da2852011eb5be3fa156940 (origin/main, origin/HEAD)
Author: smartiqa
Date: Fri Dec 4 02:00:41 2020 +0300

В описании команды git log выше сказано, что в зависимости от ситуации, она может вывести полную историю репозитория, или же только историю некоторых коммитов. Давайте разбираться, как работает Git при выводе истории.

Общее правило, которым руководствуется Git при выводе истории, такое: иди по предкам коммитов, пока они не закончатся. Иногда это бывает удобно, иногда – нет.

Давайте разберемся, что делать, если мы хотим просмотреть историю коммитов только внутри какой-то конкретной ветки. То есть историю от момента создания ветки, до последнего коммита в ней. В этом случае нужно сделать следующее:

Что такое git checkout. Смотреть фото Что такое git checkout. Смотреть картинку Что такое git checkout. Картинка про Что такое git checkout. Фото Что такое git checkout

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *