Как сделать git pull использовать rebase по умолчанию для всех моих репозиториев?



есть ли способ настроить репозиторий Git хоста таким образом, что любой git pull сделано из его (локальных) клонов использует --rebase по умолчанию? При поиске на переполнение стека, я узнал о branch.autosetuprebase, но он должен быть настроен на каждого клона в отдельности.



мой поток проекта настроен так, что мы pull the develop филиала перед mergeing ветвь функции к нему. Это pull почти всегда использует --rebase, поэтому я пытаюсь выяснить, может ли это быть по умолчанию.

563   4  
git

4 ответов:

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

1. branch.<branchname>.rebase

задание true означает, что эта конкретная ветвь всегда будет тянуть из своего восходящего потока через перебазирование, если git pull --no-rebase явно используется.

2. branch.autosetuprebase

задание always означает, что всякий раз, когда создается ветвь отслеживания, запись конфигурации, подобная той выше будет создано для него. Для более мелкозернистого управления, это также может быть установлено в never,local или remote и может быть установлен для каждого репозитория или глобально. Смотрите git config --help для более подробной информации.

3. pull.rebase

задание true означает, что git pull всегда эквивалентно git pull --rebase (если branch.<branchname>.rebase явно задано значение false). Это также может быть установлено для каждого репозитория или глобально.

вывод

так что пока вы не можете изменить поведение по умолчанию для всех будущих клонов репозитория вы можете изменить значение по умолчанию для всех репозиториев текущего пользователя (существующих и будущих) через git config --global pull.rebase true.

как о

git config --global --bool pull.rebase true

это сказать Git, чтобы всегда тянут с перебазироваться.

ответа нет.

нет способа настроить удаленный репозиторий так, чтобы каждый, кто клонирует его, имел поведение по умолчанию git pull изменен.

вы можете, однако, настроить серверный крюк, который проверяет, что никто не толкает коммиты слияния (что-то вроде этого, возможно).

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

1. Вариант branch.<name>.rebase

вы можете Настроить локальную ветвь, чтобы всегда использовать --rebase, вот так, заменив <name> название филиала:

git config branch.<name>.rebase true

после этого на master на на .git/config выглядело так:

[branch "master"]
    remote = origin
    merge = refs/heads/master
    rebase = true

2. Вариант branch.autosetuprebase

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

git config branch.autosetuprebase always

(можно также указать never,remote и local см. man git-config для сведения.)

без --global опция, конфигурация сохраняется в .git/config, и затрагивается только текущий репозиторий. С --global конфигурация сохраняется в ~/.gitconfig, и каждый неконфигурированный репозиторий будет затронут.

этот параметр не влияет на уже существующие ветви.

3. Выбор pull.rebase

git config --bool pull.rebase true

(вы также можете дать ему .)

если этот параметр имеет значение true, выполняется git pull эквивалентно git pull --rebase, если branch.<name>.rebase имеет значение false.

это делает --rebase опция по умолчанию при выдаче git pull в данной отрасли.

@Flimm, мне нужно было добавить true чтобы сделать ваш первый вариант работы.

поэтому правильный синтаксис:

git config branch.<branch>.rebase true

чтобы выполнить эту команду на develop отрасли:

git config branch.develop.rebase true

и теперь на .git/config выглядит так:

[branch "develop"]
        remote = origin
        merge = refs/heads/develop
        rebase = true

Comments

    Ничего не найдено.