Слияние веток в Git иногда может быть сложной задачей, но команда git merge
значительно упрощает этот процесс. В этом руководстве вы узнаете основы объединения веток с использованием git merge
, в паре с GitHub, ведущим инструментом управления проектами.
Давайте начнем это путешествие в мир Git и GitHub, с акцентом на мощную команду git merge
.
Предварительные условия для освоения слияния в Git
Прежде чем погружаться в тонкости git merge
, убедитесь, что у вас есть следующая настройка:
- Git (версия 2.25.1, использованная в этом руководстве) – Скачайте с официального сайта Git.
- A GitHub account – Sign up at GitHub.
- Машина с Ubuntu (здесь используется Ubuntu 20.04, но подойдет любая операционная система с установленным Git).
Инициализация проекта для слияния в Git
Чтобы эффективно использовать git merge
, вам сначала нужен проект Git. Давайте создадим демонстрационный проект для практики.
1. Начните с создания нового каталога с именем ~/git-demo и перейдите в него:
2. Создайте файл index.html в каталоге ~/git-demo со следующим содержимым. Этот базовый HTML-файл отображает сообщение о начале работы с git merge
.
3. Инициализируйте новый репозиторий Git в вашем проектном каталоге:
Команда
git init
используется для преобразования существующего проекта без версионирования в репозиторий Git или для начала нового проекта с использованием Git.

4. Подтвердите создание папки .git в вашем проектном каталоге. Эта папка – место, где Git отслеживает изменения:

5. Примените команду git add
, чтобы подготовить ваши изменения в проекте. Стадированием файла index.html вы готовите его к следующему коммиту в рабочем процессе Git.
6. Используйте git status
, чтобы подтвердить, что ваш файл правильно стадирован. Эта команда предоставляет снимок текущего состояния вашего рабочего каталога.

7. Затем зафиксируйте ваши изменения с помощью git commit
. Эта команда сохраняет ваши стадийные изменения в локальном репозитории, отмечая значительный шаг в вашей истории версий.

Установите свою идентичность Git с помощью:
git config --global user.email "[email protected]"
иgit config --global user.name "Your Name"
, если вы используете Git впервые.
8. Проверьте ваш журнал коммитов с помощью git log
. Эта команда помогает вам отслеживать изменения и является важной при подготовке к git merge
.

9. Подтвердите наличие веток в вашем репозитории с помощью git branch
. Этот шаг критичен перед выполнением git merge
.
Примечание: В последних версиях Git, имя основной ветки – ‘main’, заменяя ‘master’.

Создание ветки для слияния в Git
С вашей первоначальной настройкой Git завершена и сделан первый коммит, пришло время создать новую ветку. Эта ветка будет использоваться для демонстрации процесса git merge
эффективно.
1. Обновите файл index.html новым содержимым, чтобы продемонстрировать изменения в вашей ветке. Эта версия включает поля для ввода пользователем, готовясь к демонстрации git merge
.
2. Проверьте состояние вашего репозитория с помощью git status
, чтобы просмотреть изменения в index.html. Он должен указать, что файл изменен и не добавлен в коммит, готовый для следующих шагов в процессе git merge
.

3. Создайте новую ветку с именем “form” с помощью git checkout -b form
. Эта команда не только создает новую ветку, но и переключает вашу рабочую ветку на “form”, что является важным для реализации git merge
.

4. Подтвердите создание новой ветки, запустив git branch
. Теперь вы должны видеть обе ветки “form” и “master”, с “form” в качестве активной ветки, указанной звездочкой (*).

5. Добавьте в stage и закоммитьте ваши изменения в ветке form. Это действие гарантирует, что ветка form отражает последние обновления, сделанные в файле index.html, создавая основу для эффективного git merge
.

Слияние Локальной Ветки с Git Merge
Теперь, когда у вас есть отдельные ветки в вашем репозитории GitHub, следующим шагом будет их объединение. Этот раздел сосредотачивается на слиянии веток локально с помощью команды git merge
, базовой операции Git.
1. Для начала слияния переключитесь на ветку master
, которая будет получать обновления из ветки form
:
2. Как только вы находитесь на ветке master
, выполните git merge form
, чтобы объединить изменения из ветки form
в master
. Этот шаг является важным в процессе git merge
.

git merge
.3. Подтвердите слияние, убедившись, что вы находитесь на ветке master
и проверив, что содержимое index.html было обновлено.

git merge
.Оптимизация с Git Squash
Сжатие в Git – это техника, используемая для очистки истории коммитов. Когда у вас есть несколько сообщений коммитов, которые не нужны индивидуально, сжатие позволяет объединить их в один обширный коммит. Эта практика особенно полезна при подготовке к git merge
.
Давайте исследуем процесс сжатия, внесши дополнительные изменения в файл index.html на ветке form
, а затем сожмем эти изменения.
1. Вернитесь обратно к ветке form
, чтобы внести дополнительные изменения:
2. Измените index.html, добавив заголовок формы. Этот шаг создаст изменение, которое мы затем сложим во время слияния:
3. Добавьте изменения в стейдж и зафиксируйте их с четким сообщением, описывающим обновление:

git merge
.4. Улучшите index.html в ветке form
, добавив новое поле ввода. Эта модификация является частью подготовки к эффективному git merge
.
5. Добавьте изменения в стейдж и зафиксируйте их с отдельным сообщением, гарантируя, что каждый шаг вашей работы четко документирован для предстоящего git merge
.

git merge
.6. Затем вставьте элемент параграфа под формой в index.html, дополнительно изменяя файл в предварительной подготовке к git merge
.
7. Снова добавьте изменения в стейдж и зафиксируйте их, используя сообщение, которое отражает суть этого обновления, важного для процесса git merge
.

git merge
.8. Используйте git rebase
в интерактивном режиме, чтобы просмотреть и отредактировать ваши последние коммиты. Этот шаг является неотъемлемым в процессе сглаживания коммитов для чистого git merge
.
9. В интерактивном режиме выберите reword
для первого коммита и squash
для последующих. Это действие объединяет вашу историю коммитов, делая ваш git merge
более чистым и организованным.

git merge
.10. После переформулирования и сохранения обновите объединенное сообщение коммита, отражая кумулятивные изменения. Этот шаг завершает процесс сглаживания, готовя вас к упрощенному git merge
.

git merge
.Подтвердите успешность вашей операции сжатия, которая является неотъемлемой частью процесса git merge
при обработке нескольких сообщений о фиксации.

git squash
operation. Для одновременного сжатия и слияния используйте git merge --squash
. Эта техника объединяет и сжимает ветку form в ветку master, эффективно объединяя коммиты.
Выполнение команды git merge --squash
объединяет изменения из ветки form
в ветку master
, сжимая все коммиты в один. Этот подход является частью эффективных стратегий git merge
.

git merge
with squash option.Внедрение Fast-Forward в Git Merge
Для упрощения истории коммитов fast-forwarding является идеальным методом, особенно для незначительных обновлений или исправлений ошибок. Это позволяет вам объединять ветки без дополнительных коммитов слияния, поддерживая чистую и линейную историю, что является важным для эффективных процессов git merge
.
Fast-forwarding происходит, когда нет расхождения в базовой ветке, обычно master
, что обеспечивает плавное интегрирование историй и обновление указателей.
1. Переключитесь на ветку form
, чтобы начать процесс fast-forward:
2. Создайте и обновите файл JavaScript, например, index.js, в ветке form
, добавьте его в stage и закоммитьте изменения:
3. Наконец, выполните слияние ветки form
в master
с использованием метода fast-forward. Этот шаг совместит ветку master с последними изменениями из ветки form, создавая плавный, линейный путь git merge
.

Заключение
Этот учебник провёл вас через различные техники объединения веток с использованием git merge
. От сжатия коммитов до быстрого перемещения вперёд, эти методы улучшают вашу способность управлять проектами совместно в Git.
Теперь, обладая этими навыками, рассмотрите возможность внести вклад в совместные проекты на GitHub, применяя свои знания о git merge
на практике.