Подтвердить что ты не робот

Как сообщить Git, чтобы всегда тянуть главную ветвь?

Я нахожу git документы очень загадочными в отношении этой проблемы. Я хочу сделать простую вещь, но кажется, что это совсем не просто.

У меня следующая ситуация:

$ git remote -v
origin  git://192.168.0.49/mnt/repos
stick   /mnt/titanium/podaci/repos

Я могу использовать git pull для извлечения и слияния из источника, и это отлично работает:

$ git pull
Already up-to-date.

Я могу тянуть от палки следующим образом:

$ git pull stick master
Already up-to-date.

Однако, когда я вытягиваю палку без основной, я получаю это сообщение:

$ git pull stick
From /mnt/titanium/podaci/repos
 * [new branch]      su2009  -> stick/su2009
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me either.  Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.

If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:

    branch.master.remote = <nickname>
    branch.master.merge = <remote-ref>
    remote.<nickname>.url = <url>
    remote.<nickname>.fetch = <refspec>

See git-config(1) for details.

Некоторые вещи меня путают. Что означает "ваш файл конфигурации"? Какой файл следует изменить, и что именно мне нужно ввести? Какой псевдоним в этом случае?

Я бы ожидал, что то, что я пытаюсь выполнить, очень распространено, но я не смог найти ответ "прямо к точке" с примером.

4b9b3361

Ответ 1

Что означает здесь "ваш файл конфигурации"?

Ваш файл конфигурации репо, найденный в .git/config в корне вашего репо. (Также есть файл конфигурации для каждого пользователя в ~/.gitconfig, но вы не хотите устанавливать там настройки репо.)

Какой файл следует изменить, и что именно я должен ввести?

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

Какой псевдоним в этом случае?

Псевдоним, в данном случае, является именем пульта - так "палкой". Вам не нужно беспокоиться о параметрах remote.*, поскольку они уже настроены, но вам нужно установить параметры branch.*. Эти параметры сообщают Git, что слиться при выполнении git pull из палки.

Предположим, что вы хотите слить мастера из палки, когда делаете git pull из палки. Вы можете сделать это следующим образом:

# Sets stick as default remote for git pull.
# Note that origin will no longer be the default remote for git pull!
$ git config branch.master.remote stick

# Automatically merge in stick master branch when doing a git pull
$ git config branch.master.merge refs/heads/master

Итак, теперь, когда вы делаете git pull без какой-либо информации о дистанционном или refspec, она будет извлекать все ветки из палки и сливаться в ветки мастер-палки. Обратите внимание, что начало больше не будет удаленным по умолчанию; для объединения основной ветки исходного кода вам нужно будет использовать git pull origin master.

Если вы не хотите менять пульт дистанционного управления по умолчанию, вам придется продолжать использовать git pull stick master.