2011-10-21 14 views
27

cómo descartar cambios locales de git git? por ejemplo, la sucursal local con la versión: A-> B-> C Ahora estoy en la versión A, y tiene algunos cambios en conflicto con la última versión C. Quiero descartar los cambios locales y extraer la última versión C.cómo descartar los cambios de la sucursal local de git?

$ git pull 

Voy a encontrar algún error. y hay muchos archivos, así que no necesito hacerlo muchas veces $ git co files

¿Hay alguna otra manera mejor?

Respuesta

54

Si tiene cambios sin confirmar que desea descartar, utilice esto:

$ git reset --hard 

lo que equivale a

$ git reset --hard HEAD 

Esto elimina todos los cambios no confirmados locales. Si desea eliminar algunos infractor se compromete a su sucursal local, trate de rebobinado que:

$ git reset --hard HEAD^ #moves HEAD back by one commit 

o, por ejemplo

$ git reset --hard HEAD~3 #moves HEAD back by 3 commits 

Utilícelos con precaución, ya que no podrá deshacer estas operaciones. Una vez que haya terminado de limpiar su sucursal local, use git pull para obtener el código más reciente.

+0

Si ya ha empujado a su sucursal a un servidor remoto al que hay que tener cuidado con rearme --hard ya que puede estropear la historia. –

+0

Eso no elimina los archivos no confirmados. Debería eliminar estos archivos manualmente. –

0

¿Ya ha realizado los cambios locales? Si no es un git reset CABEZA --hard debe hacer el truco

+0

También puede deshacer cambios comprometidos localmente, consulte la solución de ayoy. – jli

19
git fetch 
git reset --hard origin/master 
+0

'git reset --hard origin/master' es exactamente lo que estaba buscando! – mystarrocks

+0

suponiendo que ha ingresado al control remoto en algún momento, ¿se aplica lo mismo a los repos locales? puedo hacer 'git reset --hard otherLocalBranch' para el mismo efecto? –

+0

Esto es exactamente lo que estaba buscando para descartar los commits que saqué de otra rama por error. Gracias @Olylyjob –

Cuestiones relacionadas