Я могу вытащить изменения с помощью git pull, но он объединяет мои локальные коммиты. Есть ли эквивалент git rebase, с которым я могу извлечь удаленные изменения?
Как я могу удалить все удаленные изменения с помощью rebase вместо merge?
Ответ 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
удалить глобальное, если вы хотите применить только текущее репо