autosetuprebase vs autosetupmerge - PullRequest
       0

autosetuprebase vs autosetupmerge

59 голосов
/ 30 марта 2011

Я просто вертелся в своем глобальном файле .gitconfig и заметил, что мне удалось получить следующее:

[branch]
  autosetupmerge = always
  autosetuprebase = always

Это выглядело более чем нелогичным, но после некоторыхЧтение, я до сих пор не знаю, нужно ли мне оба или достаточно удалить autosetupmerge и просто сохранить autosetuprebase.Большинство проектов, над которыми я работаю, имеют прямой нисходящий поток -> восходящий поток, поэтому перебазирование обычно предпочтительнее при работе с филиалами.

Ответы [ 5 ]

94 голосов
/ 03 марта 2014

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

  • autosetupmerge контролирует, подразумевают ли git branch и git checkout -b опцию --track, т.е.установка always,
    • git checkout branchname, если branchname существует на удаленном, но не локально, создаст branchname отслеживания его удаленного аналога
    • git checkout -b newbranch создаст новыйветвь newbranch отслеживание любой ветви, которую вы проверили перед выполнением этой команды
  • autosetuprebase определяет, нужно ли настраивать новые ветви для перебазирования при git pull, т. е. ваши настройкиalways приведет к тому, что ветви будут настроены так, что git pull всегда выполняет ребазинг, а не слияние.(Имейте в виду, что существующие ветви сохраняют свою конфигурацию при изменении этого параметра.)

Так что имеет смысл иметь как autosetupmerge = always, так и autosetuprebase = always;на самом деле, это также то, что у меня есть.

31 голосов
/ 19 января 2012

, так как это первый хит, если вы ищете "autosetuprebase" с помощью Google, вот совет:

git config --global branch.autosetuprebase always

Источник http://mislav.uniqpath.com/2010/07/git-tips/

25 голосов
/ 11 августа 2011

Вероятно, стоит упомянуть, что есть разница между autosetupmerge = всегда (в вашей конфигурации) и autosetupmerge = true (по умолчанию).

true установит объединение только для удаленных ветвей.всегда будет также включать локальные филиалы.

Возможно, вы хотите true.

22 голосов
/ 29 марта 2013

Поскольку я искал другие возможные варианты "autosetuprebase", и их поиск занял некоторое время, вот они:

branch.autosetuprebase

Когда создается новая ветвь с git branch или git checkout которая отслеживает другую ветвь, эта переменная указывает Git установить pull для rebase вместо слияния (см. «branch..rebase»).

  • Когда never, rebase никогда не устанавливается автоматически на true.
  • Когда local, rebase установлен на true для отслеживаемых ветвей других локальных ветвей.
  • Когда remote, для rebase установлено значение true для отслеживаемых ветвей ветвей удаленного отслеживания.
  • Когда always, для rebase будет установлено значение true для всех ветвей отслеживания.

Источник: http://git -scm.com / docs / git-config.html

0 голосов
/ 30 марта 2011

Возможно, вам не нужно настраивать autosetupmerge - по умолчанию установлено значение true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...