¿Hay alguna manera de configurar un repository de git, de modo que git pull
establezca de manera pnetworkingeterminada en un control remoto y git push
establezca por defecto en otro? Sé que puedo establecer ambos cambiando el valor de la variable remote
en la sección de sucursal de .git/config
, pero ¿cómo hacerlo para cada dirección por separado?
Para Git 1.6.4 y posteriores, configure remote.<name>.pushurl
con git config .
Uno podría usar esto para tirar utilizando el protocolo de solo lectura https:
y presionar usando un protocolo basado en ssh.
La URL de origin
Say ( remote.origin.url
) es https://git.example.com/some/repo.git
. Es de solo lectura, pero tiene acceso de escritura a través de la 'URL' basada en ssh git@git.example.com:some/repo.git
. Ejecute el siguiente command para efectuar el empuje sobre el protocolo basado en ssh:
git config remote.origin.pushurl git@git.example.com:some/repo.git
Desde la versión 1.7.0 de Git, puede configurar esto con:
git remote set-url --push origin https://your.push.com/blah/
Desde Git 1.8.3, puede usar la opción remote.pushDefault
para hacer exactamente lo que quiere (es decir, tener diferentes controles remotos pnetworkingeterminados para pull
y push
). Puede establecer la opción como cualquier otra; por ejemplo, para configurarlo en el pushTarget
remoto pushTarget
, use
git config remote.pushDefault pushTarget
Esta opción tendrá el siguiente efecto:
git pull
se extraerá desde el control remoto especificado por la opción remote
en la sección de twig relevante en .git/config
, mientras git push
presionará al control remoto especificado por remote.pushDefault
. Tenga en count que debe especificar el nombre de un control remoto, no una URL. Esto hace que esta solución sea más flexible que la solución que implica el remote.<name>.pushurl
, porque (por ejemplo) aún tendrá rastreos de rastreo para ambos controles remotos. Si usted necesita o desea esta flexibilidad, depende de usted.
Las notas de la versión dicen que esta opción se agregó específicamente para soportar flujos de trabajo triangulares.
De lo que puedo deducir de la página man de git config , el repository upstream es:
branch.remote
git pull/fetch
y git pull
Para una twig determinada, no veo ninguna forma de tener dos controles remotos por defecto .
Esto funciona en 1.7.1 y arriba –
git remote set-url --push origin git@github.com:username/somerepo.git