actualización: Bueno, han pasado varios años desde que he publicado esto! Para mi propósito específico de comparar HEAD con upstream, ahora uso @{u}
, que es un atajo que hace referencia al HEAD de la rama de seguimiento ascendente. (Ver https://git-scm.com/docs/gitrevisions#gitrevisions-emltbranchnamegtupstreamemegemmasterupstreamememuem).
Original respuesta: Me he encontrado con este problema también. A menudo utilizo múltiples controles remotos en un único repositorio, y es fácil olvidar cuál es el seguimiento de su rama actual. Y a veces es útil saberlo, como cuando quiere ver sus confirmaciones locales a través del git log remotename/branchname..HEAD
.
Todo esto está almacenado en las variables de configuración de git, pero no es necesario analizar la salida de configuración de git. Si invoca git config seguido del nombre de una variable, simplemente imprimirá el valor de esa variable, no se requiere análisis. Con esto en mente, he aquí algunos comandos para obtener información sobre la configuración de seguimiento de su rama actual:
LOCAL_BRANCH=`git name-rev --name-only HEAD`
TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge`
TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote`
REMOTE_URL=`git config remote.$TRACKING_REMOTE.url`
En mi caso, ya que sólo estoy interesado en saber el nombre de mi remoto actual, hago esto:
git config branch.`git name-rev --name-only HEAD`.remote
Sheesh. Este * no * es un duplicado exacto. Este es un subconjunto del otro, pero hay otras maneras de hacer la pregunta, como 'git remote show origin'. La respuesta principal en la otra pregunta es un guión bash envuelto alrededor de la respuesta simple aquí, que podría ser útil para algunos. Esperemos que esta pregunta no se cierre por completo. – cdunn2001
De acuerdo, definitivamente esto no debería ser una tontería. Está pidiendo algo completamente diferente a la pregunta vinculada –
el comando simple es 'git branch -vv' – vrdhn