¿Cómo hacer reference a los repositorys remotos en un alias git?

¿Cómo se puede hacer reference a un git alias para realizar una operación en la twig de seguimiento equivalente en un repository remoto llamado "origen"? Por ejemplo, si estoy en la twig "foo" de mi repository local, y quiero ejecutar un command que normalmente está pnetworkingeterminado en mi twig "origen / foo", ¿cómo puedo hacerlo?

Aquí hay un ejemplo concreto:

Quiero ver los commits entrantes de mi twig "origin / foo", y estoy en mi twig local "foo". Para hacerlo, ejecutaría git fetch && git log --pretty=oneline --abbrev-commit ..origin/foo . Por lo tanto, configuré un git incoming alias git incoming siguiente manera:

 [alias] incoming = !git fetch && git log --pretty=oneline --abbrev-commit ..@{u} 

Sin embargo, este alias se interpreta como git fetch && git log --pretty=oneline --abbrev-commit ..upstream/foo , donde @{u} es un sustituto de la twig equivalente en el control remoto ascendente. Quiero hacer el mismo command, pero en la twig equivalente en el control remoto de origen . ¿Cómo puedo hacer esto? Intenté @{o} , pero eso no funciona, y no puedo encontrar esta syntax en ningún lugar de los documentos de git alias. Obtuve mi respuesta del comentario de @sschuberth en esta respuesta , pero no encontré mucha documentation de lo contrario.

Actualización Encontré una solución cercana, pero utiliza un argumento bash en lugar de un alias git:

 incoming = !git fetch && git log --pretty=oneline --abbrev-commit ..$1 

La desventaja aquí es que no puedo aprovechar la finalización automática proporcionada por git y no compara automáticamente mi twig local con la de mi repository de origin remoto.

Tenga en count que, a mi leal saber y entender, Git aún no admite un flujo de trabajo "triangular" donde extrae de un control remoto "ascendente", aplica los cambios y lo empuja hacia un control remoto de "origen" (que es el tenedor del proyecto ascendente ) Junio, el mantenedor de Git, dice

 Note that even in a triangular workflow, <at> {u} should still refer to the place you integrate with, ie your "upstream", not to the place you push to publish the result of your work. 

Solo puede tener una twig de seguimiento remoto por sucursal local, y que o bien es la sucursal correspondiente en upstream , o la sucursal correspondiente en origin . @{u} apunta a lo que está configurado como la twig de seguimiento remoto, independientemente de si semánticamente este es su proyecto original o proyecto bifurcado. Confusamente, los documentos de Git se refieren a @{u} como una forma abreviada de "ascendente", pero de hecho la mayoría de las veces apunta a lo que generalmente es "origen".

En resumen, @{u} puede funcionar como si necesitara cambiar la twig de seguimiento remoto de su sucursal local de upstream/foo a origin/foo usando git branch --set-upstream-to origin/foo .

Editar: Si eres aventurero, probablemente también puedas probar usar el tenedor de Git de Felipe Contreras, que agrega el concepto de una twig de seguimiento de "publicación" .