Подтвердить что ты не робот

Как я могу удалить все удаленные изменения с помощью rebase вместо merge?

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

4b9b3361

Ответ 1

Да, вы можете git pull --rebase.

Вы также можете установить это поведение по умолчанию при отслеживании ветки с помощью git config branch.autosetuprebase always. Заменяйте "всегда" на "remote" или "local", если вы хотите сделать это с теми конкретными типами ветвей, которые вы отслеживаете.

Теперь вам нужно всего лишь git pull.

Если по какой-то причине вы хотите выполнить слияние, вы можете сделать git pull --no-rebase.

Надеюсь, что это поможет.

UPDATE: см. комментарии ниже, как это сделать для существующих ветвей.

Ответ 2

Вместо autosetuprebase вы можете использовать опцию pull.rebase config, чтобы изменить поведение для каждого git pull (а не только только что созданных ветвей):

[pull]
    rebase = true

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

Ответ 3

Обычно я использую комбинацию fetch/rebase, поэтому моя текущая (локальная) работа остается в верхней части:

git fetch
git rebase origin/develop

Ответ 4

Чтобы изменить поведение по умолчанию от merge до rebase В git >= 1.7.9:

git config --global pull.rebase true

удалить глобальное, если вы хотите применить только текущее репо