Diferente control remoto pnetworkingeterminado (twigl de seguimiento) para git pull y git push

¿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:

  • por defecto de origen
  • establecido por branch.remote
  • siempre para ambos 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