2012-03-02 23 views
5

Dado que una rama es más o menos solo una etiqueta, que se mueve automáticamente a la nueva confirmación, me pregunto si puedo modificar esta "etiqueta".git - mover la rama "tag" a otra confirmación?

Ejemplo:

   master 
A -- B -- C -- D 

git checkout master sería el mismo que git checkout D

¿Puedo cambiar maestro para que apunte a cometer B?

master 
A -- B -- C -- D 

git checkout master sería ahora el mismo que git checkout B

caso de uso

imaginar que alguien ha empujado un solo comprometen al repositorio en línea. Cuando hago git fetch, obtengo este compromiso local, pero mi rama maestra aún apunta a la confirmación anterior, mientras que el origen/maestro apunta a la nueva confirmación. Solo quiero mover la rama principal local a la misma confirmación que los puntos de origen/maestro.

Por lo tanto, no tendría que fusionarme.

Gracias por su ayuda

+0

En su escenario de empuje, sólo tendría que fusionar 'origen/master '. Como no tiene confirmaciones locales, se resolverá como un avance – knittl

Respuesta

1

esto debería funcionar:

git reset --hard origin/master 
7

recrear la rama para que apunte al cometer

git branch -f master D 

Usando git branch en lugar de git reset --hard aun conserva su directorio de trabajo.

+1

Parece que esto sería correcto, pero lo restablece a donde ya está usando este comando. Supongo que está buscando: git branch -f master B. –

+1

¿Esto preserva el estado de seguimiento de las sucursales? – everett1992

+0

No estoy seguro, pero supongo que no. – knittl

0

he encontrado otra solución para esto:

git fetch 
git checkout origin/master 
git branch -d master 
git branch master 

Es más lógico para mí

+0

Tenga en cuenta que se encontrará en _debido head_ state después de su secuencia de comandos. – knittl

Cuestiones relacionadas