При работе с системой контроля версий Git часто возникает необходимость объединить несколько последовательных коммитов в один, чтобы упростить историю изменений или сделать её более понятной. Также бывает нужно удалить некоторые файлы из репозитория. В этой статье мы рассмотрим, как выполнить обе эти задачи.

Шаг 1: Получение последней версии ветки main

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

git fetch origin
git checkout main
git pull origin main

Эти команды обновят нашу локальную копию репозитория и перейдут на ветку main.

Шаг 2: Просмотр истории коммитов

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

git log --oneline -n 5

Она выведет список последних пяти коммитов в виде одной строки для каждого.

Шаг 3: Объединение пяти последних изменений в один коммит

Для объединения пяти последних коммитов в один воспользуемся интерактивным ребейзингом:

git rebase -i HEAD~5

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

pick <commit_hash_1> Commit message 1
pick <commit_hash_2> Commit message 2
pick <commit_hash_3> Commit message 3
pick <commit_hash_4> Commit message 4
pick <commit_hash_5> Commit message 5

Заменим слово pick на squash для всех строк, кроме первой:

pick <commit_hash_1> Commit message 1
squash <commit_hash_2> Commit message 2
squash <commit_hash_3> Commit message 3
squash <commit_hash_4> Commit message 4
squash <commit_hash_5> Commit message 5

Сохраним и закроем файл. Откроется другой редактор, где сможем задать новое сообщение для объединённого коммита. Напишем подходящее сообщение и сохраним изменения.

Шаг 4: Отправка изменений на удалённый сервер

Теперь отправим изменения на удалённый сервер:

git push origin main --force-with-lease

Флаг --force-with-lease необходим, поскольку мы изменили историю коммитов.

Шаг 5: Удаление ненужных файлов

После успешной проверки удалим файлы:

git rm en_name_sausage_creamy.xml en_name_sausage_milk.xml en_name_sausage_munich.xml en_name_sausage_nuremberg.xml en_name_sausage_special.xml

Создадим новый коммит с этими изменениями:

git commit -m "Remove unnecessary XML files"

И отправим изменения на удалённый сервер:

git push origin main

Заключение

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

От root

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

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