К курсам
AI016 Professional

Руководство по Git Ри

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

4.9
39.0h
983 учеников
0 лайки
Искусственный интеллект
Начать обучение

Обзор курса

📚 Краткое содержание

Полное руководство по системе контроля версий Git, охватывающее от базовых рабочих процессов, таких как стадирование и коммиты, до продвинутых тем, включая интерактивную перебазировку, удалённое сотрудничество и внутреннюю работу базы данных объектов Git.

Освойте самую популярную в мире систему контроля версий — от команд до ядра системы.

Автор: Райан Ходсон

Благодарности: Ни одной явно упомянутой в предисловии не указано.

🎯 Цели обучения

  1. Сравнить и противопоставить локальные, централизованные и распределённые системы контроля версий.
  2. Определить исторические мотивы создания Git для ядра Linux.
  3. Выполнить базовую настройку Git, включая проверку установки, инициализацию репозитория и отслеживание файлов.
  4. Инициализировать репозиторий Git и определить роль директории .git.
  5. Настроить глобальные пользовательские параметры и отслеживать файлы проекта с помощью области подготовки (staging area).
  6. Выполнять коммиты для создания снимков проекта и просматривать их с помощью истории репозитория.
  7. Перемещаться к конкретным историческим коммитам по их идентификаторам и возвращаться к текущему состоянию проекта.
  8. Создавать и управлять аннотированными тегами для обозначения стабильных версий релизов.
  9. Применять git revert для отмены конкретных изменений, уже зафиксированных в истории, при сохранении прозрачной истории.
  10. Определять, создавать и переключаться между ветками с помощью командной строки Git.

🔹 Урок 1: История и основы контроля версий

Обзор: Этот урок прослеживает эволюцию систем контроля версий от ручного управления файлами до сложных распределённых систем. Он подробно описывает архитектурные различия между локальными, централизованными и распределёнными системами контроля версий (VCS) и объясняет конкретный исторический контекст, который привёл к созданию Git. Учащиеся также узнают основные шаги установки Git и инициализации первого репозитория.

Результаты обучения:

  • Сравнить и противопоставить локальные, централизованные и распределённые системы контроля версий.
  • Определить исторические мотивы создания Git для ядра Linux.
  • Выполнить базовую настройку Git, включая проверку установки, инициализацию репозитория и отслеживание файлов.

🔹 Урок 2: Основы: стадирование и коммиты

Обзор: В этом уроке рассматриваются основные этапы жизненного цикла репозитория Git, начиная с обычной папки проекта и заканчивая версионированной средой. Учащиеся научатся инициализировать репозитории, настраивать личность пользователя, отслеживать новые файлы и управлять переходом изменений через область подготовки (staging area) в постоянную зафиксированную историю.

Результаты обучения:

  • Инициализировать репозиторий Git и определить роль директории .git.
  • Настроить глобальные пользовательские параметры и отслеживать файлы проекта с помощью области подготовки.
  • Выполнять коммиты для создания снимков проекта и просматривать их с помощью истории репозитория.

🔹 Урок 3: Откат изменений и навигация по истории

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

Результаты обучения:

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

🔹 Урок 4: Основы ветвления и простое слияние

Обзор: В этом уроке рассматриваются основные этапы жизненного цикла ветвей в Git, начиная с концептуального понимания ветвей как независимых линий разработки и заканчивая практическим применением. Учащиеся научатся создавать, перемещаться и визуализировать ветвящиеся истории проекта, завершаясь интеграцией работы с помощью быстрого слияния (fast-forward) и трёхточечного слияния (3-way merge), а также последующей чисткой временных веток.

Результаты обучения:

  • Определять, создавать и переключаться между ветками с помощью командной строки Git.
  • Интерпретировать диаграммы ветвящихся историй проекта для понимания отношений между master и функциональными ветками.
  • Выполнять и различать "быстрое слияние" (fast-forward merge) и "трёхточечное слияние" (3-way merge).

🔹 Урок 5: Продвинутое ветвление и разрешение конфликтов

Обзор: В этом уроке рассматриваются продвинутые операции в Git, необходимые при расхождении историй проектов. Он охватывает теоретическую механику трёхточечного слияния, практическое использование флага -a для упрощённых коммитов и управление долгосрочными функциональными ветками. Учащиеся научатся ориентироваться в сложных взаимодействиях между ветками, разрешать ручные конфликты слияния и поддерживать чистоту репозитория путём правильной очистки веток.

Результаты обучения:

  • Объяснить структурное различие между быстрым слиянием и трёхточечным слиянием.
  • Использовать флаг -a для объединения стадирования и коммита отслеживаемых файлов.
  • Определять и разрешать конфликты слияния, интерпретируя маркеры конфликтов Git.

🔹 Урок 6: Перебазирование для линейной истории проекта

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

Результаты обучения:

  • Переместить базу функциональной ветки на вершину другой ветки для обеспечения возможности быстрого слияния.
  • Использовать интерактивное перебазирование для объединения (сжатия) нескольких мелких коммитов в один значимый снимок.
  • Модифицировать существующие коммиты во время перебазирования с использованием функций edit и --amend.

🔹 Урок 7: Переписывание истории и безопасность рефлога

Обзор: В этом уроке рассматриваются продвинутые техники Git для поддержания чистой и профессиональной истории проекта. Учащиеся освоят «интерактивное перебазирование» для переписывания прошлых коммитов, научатся точному порядку действий по разделению общих коммитов на мелкие обновления и воспользуются «рефлогом» как мощным средством безопасности для восстановления, казалось бы, потерянных данных.

Результаты обучения:

  • Выполнять интерактивное перебазирование для изменения, редактирования или разделения исторических коммитов.
  • Разбивать один общий коммит на несколько независимых, осмысленных коммитов с помощью git reset --mixed.
  • Навигироваться по рефлогу Git для обнаружения и восстановления «висячих коммитов», которые больше не связаны с веткой.

🔹 Урок 8: Сотрудничество через передачу и получение данных

Обзор: В этом уроке рассматриваются основные рабочие процессы многопользовательского сотрудничества в Git. Вы научитесь создавать независимые клонирования репозиториев, настраивать локальные идентификации для имитации разных пользователей и устанавливать «удалённые» соединения для обмена кодом. Урок фокусируется на механике получения данных (fetch) и отправки данных (push) между репозиториями для синхронизации усилий разработки.

Результаты обучения:

  • Клонировать и настроить: Успешно скопировать репозиторий и установить локальные параметры пользователя.
  • Синхронизация удалённых репозиториев: Добавить удалённые ссылки и использовать fetch и merge для интеграции изменений от других разработчиков.
  • Управление состоянием удалённых репозиториев: Перемещаться по удалённым веткам и понимать состояние «отсоединённого головного указателя» (detached HEAD) при просмотре не локального кода.

🔹 Урок 9: Централизованная модель совместного использования репозиториев

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

Результаты обучения:

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

🔹 Урок 10: Распределённая модель интегратора

Обзор: В этом уроке рассматривается переход от централизованного контроля версий к распределённой модели интегратора с использованием Bitbucket в качестве провайдера хостинга. Учащиеся пройдут путь от настройки публичного репозитория до управления сложным рабочим процессом, при котором «Интегратор» проверяет и объединяет вклады от публичных репозиториев коллег-разработчиков в официальную версию проекта.

Результаты обучения:

  • Настроить аккаунт на Bitbucket и создать публичный удалённый репозиторий для распределённого сотрудничества.
  • Выполнить «рабочий процесс интегратора», управляя несколькими удалёнными репозиториями для получения, проверки и слияния внешних вкладов.
  • Поддерживать синхронизацию между личными локальными средами и публично доступными репозиториями в команде разработчиков.

🔹 Урок 11: Коммуникация и рабочие процессы на основе патчей

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

Результаты обучения:

  • Генерировать отдельные файлы патчей из конкретных коммитов или веток с помощью git format-patch.
  • Применять внешние файлы патчей к локальному репозиторию с помощью команды git am и стандартного перенаправления ввода.
  • Выполнять полный рабочий процесс интеграции, включая тестирование патчей на временных ветках и слияние их в основную ветку.

🔹 Урок 12: Утилиты Git, хуки и расширенные сравнения

Обзор: В этом уроке рассматриваются важные команды утилиты Git и техники настройки для продвинутого управления репозиторием. Учащиеся узнают, как экспортировать и делиться репозиториями с помощью архивирования и упаковки, поддерживать чистую рабочую среду с помощью .gitignore и stash, автоматизировать рабочие процессы с помощью хуков Git и улучшать опыт работы в командной строке с помощью расширенных сравнений и пользовательских псевдонимов.

Результаты обучения:

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

🔹 Урок 13: Глубокая работа с Git: внутренняя база данных объектов

Обзор: В этом уроке происходит углубление под удобные для пользователя команды «porcelain» Git, чтобы исследовать его «plumbing» — низкоуровневую базу данных объектов. Вы узнаете, как Git использует четыре различных типа объектов (Blobs, Trees, Commits, Tags) и контрольные суммы SHA-1 для фиксации истории проекта. По окончании этого модуля вы будете понимать, как вручную манипулировать индексом и базой данных объектов для создания коммитов без использования стандартного высокоуровневого интерфейса.

Результаты обучения:

  • Определить и различать четыре типа объектов Git: Blobs, Trees, Commits и Tags.
  • Объяснить роль указателя HEAD и ссылок на ветки, указывающих на конкретные объекты коммитов.
  • Продемонстрировать рабочий процесс «plumbing»: вручную стадировать файлы, записывать деревья и создавать объекты коммитов.