¿Cómo descartar cambios no confirmados en SourceTree?


81

Soy nuevo en el entorno de Git y estoy usando BitBucket con SourceTree en Mac. Todo lo que quiero hacer ahora es descartar los cambios desde la última confirmación. ¿Cómo debería hacer esto? No he encontrado nada como "descartar cambios", y la extracción directa de la última confirmación no parece funcionar. Las soluciones hechas con la GUI o la línea de comandos serán buenas. Gracias.


¿Quieres decir que quieres deshacer la última confirmación? ¿O dejarlo y verificar el compromiso anterior por algunas razones de prueba, por ejemplo?
Mohammad AbuShady

1
@MohammadAbuShady Supongo que la respuesta no es ninguna. Desde la última confirmación, he realizado algunos cambios que quiero descartar. Quiero mi último compromiso de vuelta.
goldfrapp04

¿Entonces tiene cambios no comprometidos que desea revertir?
Mohammad AbuShady

Ninguna de las respuestas aquí me ayudó a eliminar la molesta entrada 'Cambios no confirmados' en la parte superior de mi Sourcetree. Y había demasiados archivos sin preparar para descartar uno por uno. La respuesta aquí funcionó: stackoverflow.com/questions/14075581/…
PVS

Estaba confundido entre las opciones del menú contextual al hacer clic con el botón derecho en el elemento de la lista Archivos sin etapas; Discard(Shift + Ctrl + R) y Remove(Ctrl + Del) Supongo Discardque revertirá los cambios git reset --hardy Removeeliminará el archivo y organizará esa eliminación.
The Red Pea

Respuestas:


61

Me gusta usar

git stash

Esto almacena todos los cambios no confirmados en el alijo . Si desea descartar estos cambios más adelante solo git stash drop(o git stash poprestaurarlos).

Aunque técnicamente esta no es la forma "adecuada" de descartar cambios (como han señalado otras respuestas y comentarios).

SourceTree : En la barra superior haga clic en el icono 'Stash', escriba su nombre y cree. Luego, en el menú vertical izquierdo, puede "mostrar" todo Stash y eliminarlo en el menú contextual. Probablemente no haya otra forma en ST de descartar todos los archivos a la vez.


7
bueno, si quieres descartar todo, es aún más fácil de hacergit reset --hard HEAD
Mohammad AbuShady

4
@cocoanut Creo que mi respuesta es "incorrecta" porque esto es un abuso de la stashfunción. La respuesta de Mohammad es la forma correcta de descartar todos los cambios.
Máximo

Sí, y también porque no pude ver dónde está el atajo.
Roberto

3
Me gusta este método, ya que le brinda una última oportunidad de restaurar sus cambios si cambia de opinión. Rara vez reset --hard, pero a menudo guardo mis cambios para comenzar de nuevo y luego dejo el alijo si decido que no los necesito.
Max

Este método no eliminó los archivos nuevos sin versión. El método de Roberto de usar reset y clean funcionó mejor en ese caso.
Gabriel Jensen

141

En SourceTree para Mac , haga clic con el botón derecho en los archivos que desea descartar (en la lista Archivos en el árbol de trabajo ) y elija Restablecer .

En SourceTree para Windows , haga clic con el botón derecho en los archivos que desea descartar (en la lista de Cambios de copia de trabajo ) y elija Descartar .

En git , simplemente harías:

git reset --hard para descartar los cambios realizados en los archivos versionados;

git clean -xdfpara borrar archivos nuevos (sin seguimiento ), incluidos los ignorados (la xopción). des también eliminar directorios sin seguimiento y fforzar.


9
También puede hacer clic derecho en toda la "Copia de trabajo" en el panel izquierdo (o presionar Cmd + Shift + R) ;-)
Geo

14
Es sorprendente que el mismo comando tenga un nombre diferente para Mac y Windows. Como si la GUI de Git (en comparación con la línea de comandos) ya no fuera lo suficientemente confusa.
NSTJ

¡Gracias! Creo que esto debería votarse como la respuesta correcta ;-)
Hernan Arber

@NSTJ: De acuerdo ... hace que la confianza de uno en la posibilidad de asignar una definición coherente a términos como "restablecer" y "descartar" con respecto a las herramientas de git sea bastante bien sacudida. Es decir, una definición sobre la que se puede esperar un consenso generalizado.
LarsH

7

En el archivo sin etapas, haga clic en los tres puntos del lado derecho. Una vez que haga clic en él, aparecerá un menú emergente donde podrá hacerlo Discard file.


2
Esto está bien cuando son solo unos pocos archivos, pero ¿qué sucede cuando hay muchos archivos?
Itai Spector

4

Ok, acabo de notar que mi pregunta ya fue respondida en el título de la pregunta.

Para quitar la etapa de archivos, use

git reset HEAD /file/name

Y deshacer los cambios en un archivo

git checkout -- /file/name

Si tiene un lote de archivos dentro de una carpeta, puede deshacer toda la carpeta

git checkout -- /folder/name

Tenga en cuenta que todos estos comandos ya se muestran cuando git status

Aquí creé un repositorio ficticio y enumeré las 3 posibilidades

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   test
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   test2
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       test3

3

Desde la interfaz gráfica de usuario de sourcetree, haga clic en el directorio de trabajo, haga clic con el botón derecho en los archivos que desea descartar, luego haga clic en Descartar


2

Haz lo siguiente

  • Haga clic en commit
  • Seleccione todo presionando CMD+Aque deseedelete or discard
  • Right click en los archivos no confirmados seleccionados que desea eliminar
  • Seleccionar Removede la lista desplegable

1

De acuerdo, en el árbol de fuentes de Windows es simple, en macOS también miré por un tiempo ...

Haga clic en Comando + Mayús + R mientras está en el árbol de origen , se mostrará una ventana emergente oculta que le permitirá descartar archivos individuales O TODOS. ¿Por qué está esto oculto? Nunca lo sabremos ... pero funciona ! [ingrese la descripción de la imagen aquí] 1

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.