Как объединить несколько коммитов в один git

Аватар пользователя Roman Ashikov
Roman Ashikov
08 июля 2022

Это делается с помощью интерактивного ребейза git rebase -i. Давайте разберём пример. Мы хотим объединить три последних коммита в ветке в один коммит. Для этого выполняем команду:

git rebase -i HEAD~3

Откроется окно текстового редактора интерактивного ребейза:

pick bcdc461 fix something
pick 4133a5f the awesome commit
pick e0ca1b1 the last commit

# Rebase 44211de..e0cga8b onto 55012de
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell

Тут нужно заменить pick на squash для двух последних коммитов. Список читается снизу вверх, таким образом последний коммит, это самый нижний коммит в списке.

pick bcdc461 fix something
squash 4133a5f the awesome commit
squash e0ca1b1 the last commit

# Rebase 44211de..e0cga8b onto 55012de
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell

Сохраняем файл и в следующем открывшемся окне вводим комментарий для нового коммита. Аналогично сохраняем файл. Смотрим git log и проверяем, что всё получилось.

1 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки