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

Разный пульт по умолчанию (ветвь отслеживания) для git pull и git push

Есть ли способ настроить репозиторий git, так что git pull по умолчанию используется один удаленный и git push по умолчанию для другого? Я знаю, что могу установить оба значения, изменив значение переменной remote в разделе ветвления .git/config, но как это сделать для каждого направления отдельно?

4b9b3361

Ответ 1

Для Git 1.6.4 и более поздних версий установите remote.<name>.pushurl с помощью Git config.

Можно использовать эту функцию, используя протокол только для чтения https: и нажав, используя протокол ssh.


Скажите origin url (remote.origin.url) https://git.example.com/some/repo.git. Он доступен только для чтения, но у вас есть доступ на запись через ssh-based 'URL [email protected]:some/repo.git. Выполните следующую команду, чтобы выполнить перетаскивание протокола ssh:

git config remote.origin.pushurl [email protected]:some/repo.git

Ответ 2

Так как Git версия 1.7.0, вы можете установить это с помощью:

git remote set-url --push origin https://your.push.com/blah/

Ответ 3

Так как Git 1.8.3, вы можете использовать опцию remote.pushDefault, чтобы сделать именно то, что вы хотите (то есть иметь разные пулы по умолчанию для pull и push). Вы можете установить параметр так же, как и любой другой; например, чтобы установить его на пульт pushTarget, используйте

git config remote.pushDefault pushTarget

Эта опция будет иметь следующий эффект:

  • git pull вытащит из удаленного, указанного опцией remote в соответствующем разделе ветвления в .git/config, а
  • git push будет нажимать на удаленный адрес, указанный remote.pushDefault.

Обратите внимание, что вам нужно указать имя удаленного, а не URL. Это делает это решение более гибким, чем решение, включающее remote.<name>.pushurl, потому что (например) у вас все еще есть ветки отслеживания для обоих пультов. Независимо от того, нужна ли вам эта гибкость, вам нужно.

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

Ответ 4

Из того, что я могу собрать на странице git config man, восходящее репо:

  • по умолчанию начало
  • установлен branch.remote
  • всегда для git pull/fetch и git pull

Для данной ветки я не вижу возможности по умолчанию иметь два отдельных пульта.

Ответ 5

Это работает в 1.7.1 и выше -

git remote set-url --push origin [email protected]:username/somerepo.git