Введение

Есть много способов работы с git, если они чисты и не наносят ущерба, вероятно, большинство из них хороши.

Но так же, как пробел против табуляции, в мире ИТ идет война между поклонниками git rebase и поклонниками git merge.

Есть масса аргументов по поводу:

-Какой способ лучше?

-Кто чище?

-Как удобнее?

-Какой из них дает более чистый git-граф?

-Почему это важно, и какой из них более опасен?

В этой статье я объясню вам несколько различий между git merge, git rebase и git интерактивной перебазировкой.

Расскажу немного о том, какие плюсы и минусы (лучше или хуже вариантов нет, в основном в IT, есть просто предпочтения).

Я также постараюсь ответить на несколько наиболее часто задаваемых вопросов о них.

Пойдем!

Если вы предпочитаете видео, вот версия для YouTube.

Перебазировать с помощью Git:

Как работает git rebase

Когда мы разрабатываем функции, мы обычно создаем ветвь функций из нашей основной ветки.

Мы используем git rebase, когда хотим взять все коммиты из нашей функциональной ветки и переместить их в основную ветку.

Этот тип git rebase не даст нам столько возможностей для манипулирования каждым коммитом, а возьмет их все и переместит к месту назначения.

Чтобы лучше контролировать все коммиты, стоит взглянуть на интерактивную перебазировку git, которая даст нам гораздо больше возможностей для настройки.

Как вы разрабатываете перебазирование

Запустить git rebase очень просто, и нам нужна всего одна строка кода внутри нашего терминала.

Мы можем разработать rebase, набрав:

git checkout feature-branch
git rebase your-main-branch(for example master or develop)

Как исправить конфликты перебазирования

Я хотел бы показать вам два способа решения конфликтов с помощью rebase.

Решить конфликт с git:

Вы можете решать конфликты вручную, добавлять файлы:

git add

и введите

git rebase --continue

Пропустить фиксацию:

Вы можете пропустить фиксацию, набрав:

git rebase --skip

Безопасна ли git rebase

Если мы знаем, что делаем, да, git rebase безопасен.

В любом случае, мы должны заботиться.

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

Почему git rebase опасен

Git rebase может быть немного опасным, когда мы делаем это неосторожно.

Особенно в проекте цейтнота.

Здесь нужно использовать силовой толчок, и это переписывает часть истории.

Конечно, есть возможность отменить кик-ребейз. Тем не менее, это занимает немного больше времени, чем, например, просто откат коммитов.

Персонажи Git rebase

-Чистый график git

- Более легкий доступ к одному, единственному коммиту

-Чистая основная ветка

Минусы перебазирования Git

-При перебазировании пульта вам нужно использовать принудительное нажатие

-Может быть опасным, потому что переписывает историю

-Не очень легко для новичков

-При обычном ребейзе у нас не так много возможностей манипулировать коммитами

Интерактивная перебазировка Git:

Как работает интерактивная перебазировка git

Интерактивная перебазировка Git очень похожа на обычную перебазировку.

Это дает нам видимый редактор, который может помочь нам легко управлять каждым коммитом, поэтому мы не слепы с коммитами, которые мы перемещаем.

Это особенно полезно с большими ветками, большими репозиториями и не очень чистой историей git.

Пример интерактивной перебазировки Git

Чтобы выполнить интерактивную перезагрузку git, нам нужно выполнить те же шаги, что и с обычной, введите свой терминал:

git checkout feature-branch
git rebase -i your-main-branch(for example master or develop)

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

-pick, you will keep and push commit to the main
-reword, you will change the message of the commit
-edit, that means you will be able to edit the commit
-squash, commits with that method will be squashed into one
-fixup, similar to squash, but you will delete log of the commit
-drop, it will remove a commit

Профессионалы интерактивной перебазировки Git

-То же, что и обычная перебазировка

-Хороший редактор, который дает нам возможность легче манипулировать каждым коммитом

-Мы можем быстро очистить беспорядок в истории нашего репо

Git интерактивные минусы перебазирования

-Похоже на обычную перезагрузку

Слияние с помощью Git

Как работает git merge

Git merge — это метод, который берет все содержимое нашей текущей ветки и помещает его в нашу целевую ветку.

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

В этом случае git создаст новый коммит слияния и возьмет весь контент (история, код, коммиты) из функциональной ветки и поместит все это в нашу основную ветку.

В чем разница между слиянием и перебазированием

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

Как выполнить слияние git

Мы можем сделать это тремя способами.

Первый метод представляет собой комбинацию выборки и слияния.

В основном используется для слияния основной ветки внутри вашей ветки для разрешения локальных конфликтов перед созданием мерж-реквестов в ваших приложениях, таких как GitHub или BitBucket.

Вытягивающий:

git checkout feature-branch
git pull origin your-main-branch(for example master or develop)

Объединение:

git checkout feature-branch
git merge your-main-branch(for example master or develop)

Должен ли я перебазировать перед слиянием

Вы можете сделать rebase, чтобы раздавить ваши коммиты, и немного очистить свой gitflow.

Затем вы можете выполнить слияние и получить чистый график.

Профи слияния с помощью Git

-Скоростной способ соединения веток

-Легко для всех

-Очень легко вернуться при ударе ногой

Минусы Git слияния

-Не чистые логи

-Git график и история не очень чистые

- Отладка с использованием методов git, таких как bisect, может быть более сложной.

Заключение

Поздравляем, теперь вы мастер git rebase!

Я не скажу вам, какой из них лучше, потому что каждый проект индивидуален. Некоторые из них большие, и в течение многих лет, некоторые из них находятся в цейтноте, некоторые компании много заботятся о качестве, а некоторые не заботятся вообще.

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

Надеюсь, я объяснил вам основные моменты между этими тремя основными методами обновления веток, и у вас не возникнет проблем с их использованием в дальнейшем.

Если у вас остались вопросы или вы хотите, чтобы я написал статью на интересующую вас тему, не стесняйтесь оставлять комментарии!

Спасибо за чтение,

Радек из Дуомли