Я могу вытащить изменения с помощью 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
удалить глобальное, если вы хотите применить только текущее репо