2011-01-28 29 views
73

Estoy trabajando en una sucursal (es decir, design) y realicé una serie de cambios, pero debo descartarlos todos y restablecerlos para que coincidan con la versión del repositorio. Pensé que git checkout design lo haría, pero simplemente me dice que ya estoy en la rama design y que tengo 3 archivos modificados.¿Cómo descartar todos los cambios realizados en una sucursal?

¿Cómo descartar esos cambios y obtener la rama tal como está ahora en el servidor remoto?

Respuesta

133

Nota: Usted NO SE PUEDE DESHACER esto.

Trate git checkout -f Esto descartará cualquier cambio locales, que son no comprometido en TODAS ramas y maestro.

47

git reset --hard puede ayudar si usted quiere tirar todo desde el último comprometerse

+5

o 'git reset --hard HEAD ^' – deadfish

+10

'git reset --hard HEAD ^' realmente debería ser la respuesta aceptada. OP no estaba preguntando sobre otras sucursales ... – bphilipnyc

+2

Intenté esto, y creo que borró todo desde mi último empujón, no solo mi último compromiso. –

16

Si no desea ningún cambios en design y definitivamente quiere que solo coincide con un mando a distancia de rama, también puede simplemente eliminar la rama y volver a crearla:

# Switch to some branch other than design 
$ git br -D design 
$ git co -b design origin/design   # Will set up design to track origin's design branch 
+5

también: diseño de pago de git; git reset --hard origin/design – user37078

+0

También me comprometería antes de eliminar la rama – Asarluhi

+0

Esta debería ser la respuesta aceptada –

7

@Will, git immersion es una muy agradable y sencillo tutorial de git. le mostrará cómo deshacer cambios para los siguientes casos: sin escena, en etapas y comprometido. laboratorios 14-18

+2

Solo me gustaría decir que he hecho la inmersión git ... más de un año después. OI! Debería haber hecho esto mucho antes ... – Will

10
git diff master > branch.diff 
git apply --reverse branch.diff 
2

En la raíz de origen: git reset ./ HEAD <--un-stage any staged changes git checkout ./ <--discard any unstaged changes

1

Cuando se desea descartar los cambios en su sucursal local, que pueden esconder estos cambios mediante el comando git alijo.

git alijo Guardar "some_name"

Los cambios se guardan y se pueden recuperar los que más tarde, si lo desea o puede eliminarla. Después de hacer esto, su sucursal no tendrá ningún código no asignado y puede extraer el último código de su rama principal usando git pull.

Cuestiones relacionadas