Общие сведения о журнале Git
Git представляет историю в основном не так, как централизованные системы управления версиями (CVCS), такие как система управления версиями Team Foundation, Perforce или Subversion. Централизованные системы хранят отдельную историю для каждого файла в репозитории. Git сохраняет журнал в виде графа моментальных снимков всего репозитория. Эти моментальные снимки, называемые фиксациями в Git, могут иметь несколько родителей, создавая журнал, который выглядит как граф вместо прямой линии. Эта разница в истории невероятно важна и является основной причиной, по которой пользователи, знакомые с CVCS, находят Git запутанным.
Основы журнала фиксации
Начните с простого примера журнала: репозиторий с тремя линейными фиксациями.
Commit A является родительским элементом фиксации B, а фиксация B является родительским объектом фиксации C. Эта история выглядит очень похоже на CVCS. Стрелка, указывающая на фиксацию C, является ветвью. Ветви — это указатели на определенные фиксации, поэтому ветвление настолько упрощено и легко в Git.
Ключевое различие в Git по сравнению с CVCS заключается в том, что разработчик имеет собственную полную копию репозитория. Они должны синхронизировать локальный репозиторий с удаленный репозиторий, получив последние фиксации из удаленный репозиторий. Для этого они извлекают основную ветвь со следующей командой:
git pull origin main
Это объединяет все изменения из основной ветви в удаленный репозиторий, которые по умолчанию называются origin
Git. Этот запрос принес одну новую фиксацию и основную ветвь в локальном репозитории перемещается к этой фиксации.
Общие сведения о журнале ветвей
Теперь пришло время внести изменения в код. Обычно при работе с различными функциями параллельно работают несколько активных ветвей. Это резко контрастирует с CVCS, где новые ветви тяжелые и редко создаются. Первым шагом является проверка out в новую ветвь с помощью следующей команды:
git checkout -b cool-new-feature
Это сочетание двух команд:
git branch cool-new-feature
Создание ветвиgit checkout cool-new-feature
Начало работы в ветви
Теперь две ветви указывают на одну фиксацию. Предположим, что в ветви есть несколько изменений cool-new-feature
в двух новых фиксациях, E и F.
Фиксации доступны в cool-new-feature
ветви, так как они были зафиксированы в этой ветви.
Теперь, когда эта функция выполнена, ее необходимо объединить в основную ветвь. Для этого используйте следующую команду:
git merge cool-new-feature main
Структура графа журнала становится видимой при слиянии. Git создает новую фиксацию при слиянии ветви в другую ветвь. Это фиксация слияния. Изменения не включены в эту фиксацию слияния, так как не было конфликтов. Если были конфликты, фиксация слияния будет включать изменения, необходимые для их устранения.
История в реальном мире
Ниже приведен пример истории Git, который более тесно похож на код в активной разработке в команде.
Существует три человека, которые объединяют фиксации из своих собственных ветвей в main
ветвь примерно в то же время.
Следующие шаги
Дополнительные сведения о работе с журналом Git в GitHub и Azure Repos или журнале журналов Git.