Autosetuprebase vs autosetupmerge - программирование
Подтвердить что ты не робот

Autosetuprebase vs autosetupmerge

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

[branch]
  autosetupmerge = always
  autosetuprebase = always

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

git config --global branch.autosetuprebase always

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

Ответ 4

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

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

Вероятно, вы хотите true.

Ответ 5

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

branch.autosetuprebase

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

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

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