Как вытащить все удаленные изменения с помощью rebase вместо слияния? - PullRequest
23 голосов
/ 15 марта 2011

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

Ответы [ 4 ]

28 голосов
/ 15 марта 2011

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

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

Теперь все, что вам нужно сделать, это git pull.

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

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

ОБНОВЛЕНИЕ: см. Комментарии ниже для того, как сделать это на существующих ветвях.

12 голосов
/ 11 апреля 2013

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

[pull]
    rebase = true

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

4 голосов
/ 15 марта 2011

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

git fetch
git rebase origin/develop
0 голосов
/ 21 июня 2017

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

git config --global pull.rebase true

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

...