¿Cómo reinicio git –hard origen / cualquier twig que he revisado?

Intento escribir un script de implementación de git, pero el script debe actualizar varios serveres y no todos están en la misma twig de Git. Idealmente, el script debería necesitar solo un command, para el efecto de "git reset –hard origin / whateverBranchThisServerIsOn".

Ahora, entiendo que puedo hacer:

git reset --hard origin/foo 

para reiniciar mi entorno git a la sucursal foo remota. Sin embargo, lo que me gustaría hacer es restablecer a una twig remota, pero no específicamente, simplemente "el control remoto de cualquier twig que la máquina haya revisado actualmente (es decir, qué twig se muestra cuando haces git branch ").

He intentado:

 git reset --hard origin 

y:

 git reset --hard origin/HEAD 

y:

 git reset --hard HEAD 

pero todos ellos seleccionan otras sucursales o (en el último caso) no obtienen los commit remotos. Seguramente hay alguna manera de decir git reset --hard origin/CURRENT_BRANCH ?

La idea de "la twig que he revisado" es un poco mal formada. No existe una relación 1: 1 entre twigs como esa. Su sucursal puede no tener un "origen" en absoluto. Pero puede tener una sucursal de seguimiento remoto, que puede tener (o no) el mismo nombre que usted. Leyendo man gitrevisions , parece que especificar HEAD@{upstream} debería funcionar para hacer lo que quiera. Pero no lo he probado.

 # simple script to reset hard to the current branch origin branch=$(git symbolic-ref --short -q HEAD) echo "Sure to reset hard to origin/$branch ?" read git reset --hard origin/$branch 

"Lo que sea que hayas revisado" se llama HEAD . Entonces, git reset --hard HEAD te revertirá a lo que hayas revisado antes de que comenzaras a hacer modificaciones que ahora has decidido que no quieres mantener …

Dado que la sucursal en la que se encuentra actualmente puede tener o no un equivalente ascendente, no estoy seguro de que haya un solo command para lograr ciegamente lo que está describiendo. Podría escribir un poco de un script de shell que analiza el resultado de la git branch y toma una decisión sobre qué twig remota desea que esté, o muere si ve algo que no espera.