Украсьте процесс Git Commit с помощью Git Rebase

внешний интерфейс сервер Git
Украсьте процесс Git Commit с помощью Git Rebase
使用 Git Rebase 美化 Git Commit 流程

предисловие

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

что такое git rebase

Есть два способа изменения между разными ветками в git:mergeа такжеrebase, слияние чаще используется для слияния ветвей. Точно так же для слияния ветвей можно использовать и перебазирование. Хотя он используется реже, его функция намного мощнее, чем простое слияние.

Перебазировать означает перебазировать. Как следует из названия, это изменение точки отсчета. С фиксацией в качестве контрольной точки вы можете изменять историю коммитов по своему желанию, а с ветвью в качестве контрольной точки вы можете объединять ветки и организовывать фиксации в в то же время.

как использовать

Как упоминалось выше, перебазирование может быть основано на коммите или ветке, Взяв за пример автора, основное использование перебазирования выглядит следующим образом:

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

зафиксировать модификацию

Для фиксации изменений вы можете использоватьgit commit -amendИзмените информацию о коммите. Если вы хотите изменить несколько коммитов, вы должны использоватьgit rebase.

Простой процесс выглядит следующим образом:

использоватьgit log --onelineПолучить хеш-значение соответствующего коммита (данный коммит является точкой отсчета и в данной модификации не участвует);

git-log

использоватьgit rebase -i 5663aa4(指定的基准点)Войдите в режим vi, чтобы вручную редактировать коммиты в выбранном диапазоне, которые можно объединять, редактировать и удалять.Подробности см. в комментариях в интерфейсе vi.

git-rebase-commit

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

слияние ветвей

Существует два способа объединения веток:mergeа такжеrebase, вы можете обратиться к конкретной разнице между двумя методамиPro Git Bookобъяснение.

Проще говоря:

Для вилки git в той же ситуации:

git-rebase-1

Мергеры слияния показаны ниже:

git-rebase-2

Слияние Rebase показано ниже:

git-rebase-3

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

обоюдоострый меч

Рабочий процесс gitflow обычно рекомендуется при ежедневной совместной разработке команды, а использование перебазирования для слияния веток запрещено.Основная причина в том, что перебазирование изменит поток коммитов всей ветки, который чрезвычайно подвержен версии конфликтов.Поэтому по использованию rebase у автора есть несколько небольших предложений:

  • Использование rebase для изменения коммитов происходит только в локальных ветках
  • Локальные ветки должны быть отправлены в репозиторий сервера передgit rebase origin (branch)Обязательно скачайте последний код.
  • Запрещено использоватьgit push --forceПерезаписать историю коммитов на сервере.

В общем, rebase — очень мощный инструмент, и если он сделан правильно, он определенно убивает.

Суммировать

Подводя итог, автор резюмирует набор для объединенияспецификация сообщения фиксацииа такжеgit rebaseРабочий процесс выглядит следующим образом:

Предположим, команда разрабатывает проект, кромеmasterза пределами филиалаdevelopфилиал, то в локальной разработке следует опираться наdevelopВетка Создайте пользовательскую ветку:

git checkout developgit branch -b minfive

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

На данный момент локальная разработка завершена, и код необходимо отправить на сервер, затем используйтеgit pull --rebaseВытащите последнюю фиксацию с сервера и перебазируйте вdevelopветвь. Если есть конфликт, чтобы разрешить конфликт, если конфликта нет, вы можете напрямую отправить код на сервер.

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

Затем остальная часть процесса в основном такая же, как рабочий процесс gitflow.

После такого процесса поток фиксации выглядит следующим образом:

git-rebase

без появления избыточных коммитов слияния:

git-merge

Артефакт спасения от обсессивно-компульсивного расстройства! ! !

Также: прилагаетсяdemoодин.

использованная литература

Спасибо за прочтение этой статьи отMINFIVEвсе права защищены. При перепечатке просьба указывать источник: MINFIVE (blog.minfive.com/)