Есть ли способ настроить репозиторий git, так что git pull
по умолчанию используется один удаленный и git push
по умолчанию для другого? Я знаю, что могу установить оба значения, изменив значение переменной remote
в разделе ветвления .git/config
, но как это сделать для каждого направления отдельно?
Разный пульт по умолчанию (ветвь отслеживания) для git pull и git push
Ответ 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