Git

Как сделать Git Rebase

Как сделать Git Rebase
git rebase это утилита слияния, такая же как git merge. Но то, как они работают, отличается.

В этой статье я расскажу о том, как работает Git rebase, о различиях между Git rebase и Git merge и о том, как работать с Git rebase. Итак, приступим.

Git Rebase:

Допустим, у вас есть репозиторий Git с коммитами А, B, C в владелец ветка. Затем вы создали новую ветку какая-то ветвь и добавил 2 новых коммита D а также E к какая-то ветвь ветка.

Рис 1: начальная история фиксации.

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

Рис 2: история коммитов после добавления коммита G в главную ветку.

Все выглядит хорошо. Теперь, если вы хотите, чтобы все изменения, которые вы внесли в какая-то ветвь филиал, чтобы быть в владелец ветку, вы можете объединить какая-то ветвь ветвь к владелец ветка. Это то, что мерзавец слияние делать.

Что делать, если вы хотите зафиксировать грамм быть доступным в какая-то ветвь ветка? Что ж, вы можете использовать для этого git rebase.

Из истории коммитов на рис. 2 видно, что ветка какая-то ветвь начинается с коммита C. Если вы выполните git rebase на какая-то ветвь, тогда он начнется с фиксации грамм как показано на рис. 3 ниже. Обратите внимание, что содержимое коммита D а также E также изменится после операции перебазирования. Коммиты D а также E будет включать изменения в фиксацию грамм. Вот почему я добавил * символ перед коммитами D а также E.

Если вы хотите знать, как будет выглядеть история коммитов, если я ее объединю, взгляните на рис 4. Я включил его, чтобы вы могли сравнить его с git rebase.

Рис 4: история коммитов, если использовалось слияние git.

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

Рабочий процесс Git Rebase:

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

Сначала создайте новый репозиторий Git rebase-demo / на вашем компьютере следующим образом:

$ git init rebase-demo

Теперь перейдите к rebase-demo / каталог следующим образом:

$ cd rebase-demo /

Теперь создайте новый файл контрольная работа.текст следующим образом:

$ echo "A"> тест.текст

Тест.txt файл содержит только одну строку А. Допустим, это ваш исходный код проекта.

Теперь зафиксируйте изменения следующим образом:

$ git add .
$ git commit -m 'A'

Теперь добавьте еще одну строку B к контрольная работа.текст файл, как показано на скриншоте ниже.

Теперь зафиксируйте изменения следующим образом:

$ git add .
$ git commit -m 'B'

Теперь давайте добавим еще одну строку C к контрольная работа.текст файл.

Кроме того, зафиксируйте изменения следующим образом:

$ git add .
$ git commit -m 'C'

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

$ git log --oneline

Теперь, допустим, у вас есть несколько новых идей, которые вы хотите опробовать. Итак, давайте создадим и перейдем в новую ветку новая особенность следующим образом:

$ git checkout -b новая функция

Теперь добавьте свою новую идею (строка D скажем) к контрольная работа.текст файл.

Теперь зафиксируйте изменения следующим образом:

$ git add .
$ git commit -m 'D'

Теперь добавьте линию E к контрольная работа.текст файл.

Зафиксируйте изменения следующим образом:

$ git add .
$ git commit -m 'E'

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

$ git log --oneline

Посмотрите, как коммиты в порядке A < B < C < D < E?

Теперь вы помните, что забыли добавить что-то в владелец ветке, в которой вы также хотели быть новая особенность ветка! Итак, оформляем заказ в владелец ветка.

Я добавил новую строку в конце контрольная работа.текст файл, как вы можете видеть.

Теперь зафиксируйте изменения следующим образом:

$ git add .
$ git commit -m 'G'

Теперь история фиксации владелец ветка должна выглядеть так.

А < B < C < G

Теперь, чтобы перебазировать коммиты из владелец ветвь к новая особенность филиал, первая касса в новая особенность ветка.

Новая функция $ git checkout

Теперь выполните git rebase для владелец ветвь следующим образом:

$ git rebase master

Некоторый конфликт слияния! Давай исправим это.

Что ж, изменения, которые я внес в коммит грамм а также D противоречат друг другу. Я хочу сохранить оба эти.

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

Теперь добавьте изменения в промежуточную область следующим образом:

$ git add .

Теперь продолжите перебазирование следующим образом:

$ git rebase - продолжить

Другой конфликт слияния! Ну это может случиться. Rebase изменяет историю коммитов git. Итак, такие вещи ожидаются.

Кажется, что процесс слияния не удался из-за пустых строк. Давай исправим это.

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

Теперь добавьте изменения в промежуточную область следующим образом:

$ git add .

Теперь продолжите операцию перебазирования следующим образом:

$ git rebase - продолжить

Git rebase завершена.

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

А < B < C < G < D < E

Как и ожидалось.

Финал контрольная работа.текст файл должен выглядеть следующим образом.

Git rebase - мощный инструмент. Но вы никогда не должны использовать его в общих репозиториях Git. Используйте его только в репозиториях Git, с которыми работаете только вы. В противном случае вы столкнетесь с множеством проблем по пути.

Итак, как вы используете git rebase. Спасибо, что прочитали эту статью.

OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...
Учебник OpenTTD
OpenTTD - одна из самых популярных бизнес-симуляторов. В этой игре вам нужно создать замечательный транспортный бизнес. Тем не менее, вы начнете в нач...
SuperTuxKart для Linux
SuperTuxKart - отличная игра, созданная для того, чтобы бесплатно познакомить вас с Mario Kart в вашей системе Linux. Играть в нее довольно сложно и в...