2011-09-18 9 views
35

He clonado un git repo y luego comencé a jugar en su rama principal. Después de un tiempo, quiero ignorar los cambios que acabo de hacer (sin comprometerlos), y cambiar a una rama diferente. Sin embargo, me impide cambiar porque hay cambios no confirmados. ¿Cómo los ignoro? Esto es lo que sucede:Cambiar una rama después de cancelar los cambios actuales en git

$ git checkout gh-pages 
error: Your local changes to the following files would be overwritten by checkout: 
     somefile.txt 
Please, commit your changes or stash them before you can switch branches. 
Aborting 

Respuesta

59

Opción 1

git checkout -f gh-pages 

Opción 2

git reset --hard  # beware: don't make that a habit 
git checkout gh-pages 
+2

La opción 1 no funcionó. Git era un goliat de un solucionador de problemas reacio. Me forzaron a restablecer git, un hábito. El santo grial del comando git que arregla todo. – shailenTJ

+2

@shailenTJ Deberías ser un poeta :) Y estar seguro, yo uso git reset --hard a menudo. Pero la cosa es que es un arma poderosa y no debes ** usar ** sin darle el pensamiento adecuado, ya que perderá cualquier cosa que no haya sido comprometida (o al menos añadida al índice una vez, y eso sería complicado para recuperar). – sehe

+0

La opción 2 no funcionó para mí, simplemente repite el error. Git es una pesadilla total. – Owl

5

Puede ignorar todos los cambios no confirmados.

git reset --hard HEAD

3

Si usted es realmente seguro de que desea tirar sus cambios no confirmados (es decir, aquellos que se llevaron a cabo, así como los de su árbol de trabajo) que puede hacer:

git reset --hard 

En general, esconder a menudo es más seguro

+0

que realmente quiero t o tirar mis cambios, no me deja. He intentado restaurar git --hard, he intentado esconder y dejar el alijo. Helllllp. Sálvame de este terrible software de control de versiones. – Owl

+0

@Owl Creo que sería mejor crear una nueva pregunta para su problema, incluida la salida de 'git status'. –

3

Si tiene archivos sin preparar, probar:

git checkout -- . 

O

git checkout -- filename 
+0

Esto solucionó mi problema, gracias. Parece que este problema es resuelto por un pago de git -. o git reset --hard. Uno de esos debería arreglarlo. – Owl

11

Sólo por el bien de la integridad, y para aquellos que aterrizó aquí mediante la búsqueda : Aunque el OP solicita específicamente una solución sin stashing, vale la pena mencionar que el alijo es una opción muy buena:

El comando guarda sus modificaciones locales y revierte el directorio de trabajo para que coincida con la confirmación HEAD.

Así que usted puede simplemente

git stash 

Esto es como una puesta a CABEZA. Al estar absolutamente seguro de que de hecho positivamente esos cambios no tienen ningún valor, simplemente

git stash drop 

Usted puede incluso tener varios stashes etc., como se menciona en el enlace de la documentación anteriormente.

Recomendaría esta práctica ya que se acostumbra a pensar dos veces antes de reiniciar sin un costo significativo.

+0

Eso tampoco me funciona. – Owl

0

git add -A alijo git

esto borrará todos los cambios realizados (Sólo aquellos que no están comprometidos)

0

Puede descartar los cambios realizados en un archivo específico:

git checkout somefile.txt 

y luego saltar sin problemas a la rama:

git checkout gh-pages 
Cuestiones relacionadas