Есть ли способ настроить Git-репозиторий хоста таким образом, чтобы все, что git pull
сделано из его (локальных) клонов, использовали --rebase
по умолчанию? Поиск по переполнению стека позволил мне узнать branch.autosetuprebase
, но его нужно настраивать для каждого клона индивидуально.
Мой проектный поток настроен так, что мы pull
выполняем develop
ветвление перед тем, merge
как добавить к нему ветку. Это pull
почти всегда используется --rebase
, поэтому я пытаюсь выяснить, может ли это быть по умолчанию.
Ответы:
В настоящее время есть 3 различных уровня конфигурации для поведения по умолчанию. От самых общих до самых мелкозернистых:
1.
pull.rebase
Установка этого значения
true
означает, чтоgit pull
это всегда эквивалентноgit pull --rebase
(еслиbranch.<branchname>.rebase
явно не установлено значениеfalse
). Это также может быть установлено для репозитория или глобально.2.
branch.autosetuprebase
Установка этого значения
always
означает, что при создании ветви отслеживания для нее будет создаваться запись конфигурации, подобная приведенной ниже. Для более точного контроля это также может быть установленоnever
,local
илиremote
и может быть установлено для репозитория или глобально. Смотритеgit config --help
для более подробной информации.3.
branch.<branchname>.rebase
Установка этого значения
true
означает, что эта конкретная ветвь будет всегда вытягиваться из своего восходящего потока посредством перебазирования, еслиgit pull --no-rebase
не используется явно.Вывод
Таким образом, хотя вы не можете изменить поведение по умолчанию для всех будущих клонов хранилища, вы можете изменить значение по умолчанию для всех хранилищ текущего пользователя (существующего и будущего) через
git config --global pull.rebase true
.источник
~/.gitconfig
, что означает, что каждый разработчик, который клонирует репозиторий хоста, должен будет запустить команду. Не жалуюсь на ваше решение. Это хорошо, я просто хочу подтвердить, что я правильно понял вашу точку зрения.Как насчет
Это скажет git всегда тянуть с rebase.
источник
--bool
, это не нужноОтвет - нет.
Невозможно настроить удаленный репозиторий, чтобы у всех, кто его клонировал, поведение по умолчанию
git pull
изменялось.Вы можете, однако, установить серверную ловушку, которая проверяет, что никто не нажимает коммиты слияния (возможно, что-то вроде этого ).
Есть также некоторые параметры конфигурации, которые могут вас заинтересовать. Все разработчики, которые клонируют из удаленного репозитория, должны будут установить его самостоятельно.
1. Вариант
branch.<name>.rebase
Вы можете настроить локальную ветку так, чтобы она всегда использовалась
--rebase
, заменяя<name>
ее именем на ветку:После запуска этого на
master
, вmaster
разделе.git/config
выглядит следующим образом :2. Вариант
branch.autosetuprebase
Выполнение этой предыдущей команды config для каждой ветви Git может быть проблематичным, поэтому вы можете настроить Git для автоматической настройки ее для каждой новой ветви:
(Вы также можете указать
never
,remote
иlocal
, смотритеman git-config
детали.)Без этой
--global
опции конфигурация сохраняется.git/config
и затрагивается только текущий репозиторий. При--global
этом конфигурация сохраняется в~/.gitconfig
, и это затрагивает каждый ненастроенный репозиторий.Эта опция не влияет на уже существующие ветки.
3. Вариант
pull.rebase
(Вы также можете дать ему
--global
возможность.)Если этот параметр имеет значение true, выполнение
git pull
эквивалентноgit pull --rebase
, еслиbranch.<name>.rebase
не было установлено значениеfalse
.источник
Это делает
--rebase
опцию по умолчанию при выдачеgit pull
в данной ветви.@Flimm, мне нужно было добавить,
true
чтобы ваш первый вариант работал.Итак, правильный синтаксис:
Чтобы запустить эту команду в
develop
ветке:И теперь
develop
раздел.git/config
выглядит так:источник
В настоящее время нет способа установить политику по умолчанию для хранилища.
Если вы хотите это для себя и используете хотя бы git 1.7.9, вы можете глобально настроить
pull.rebase
конфигурацию следующим образом:Но вам придется делать на каждой машине. Одним из вариантов может быть настройка стандартного шаблона / скелета пользователя по умолчанию с этим параметром. Однако пользователи могут изменить эту опцию.
Если вы не хотите слияния, вы можете определить ловушку на стороне сервера, чтобы отклонять толчки с слияниями.
Для справки: его исходная документация для pull.rebase:
источник