¿Cómo eliminar una confirmación saliente sin presionar en Visual Studio?

114

Accidentalmente empujé un cambio por etapas en una nueva rama en Visual Studio 2017 a mi repositorio local. No se ha enviado al repositorio remoto. Quiero deshacerme de él, pero no encuentro la forma de hacerlo. Rebasé de la rama maestra local a la nueva rama. Luego eliminé la nueva rama. Pero Outgoing Commits todavía lo demuestra. ¿Cómo eliminarlo o revertirlo?

ingrese la descripción de la imagen aquí

Tony_Henrich
fuente
Gracias por esta pregunta, tenía la misma pregunta
Imran Rizvi

Respuestas:

177

Abra la pestaña del historial en Team Explorer desde el mosaico Ramas (haga clic con el botón derecho en su rama). Luego, en el historial, haga clic con el botón derecho en la confirmación antes de la que no desea enviar, elija Restablecer. Eso hará que la rama vuelva a esa confirmación y debería eliminar la confirmación adicional que realizó. Para restablecer antes de una determinada confirmación, debe seleccionar su padre.

Dependiendo de lo que quiera hacer con los cambios, elija difícil , lo que los eliminará localmente. O elija suave que deshará la confirmación pero dejará su directorio de trabajo con los cambios en su confirmación descartada.

jessehouwing
fuente
22
Vale la pena poner en negrita la parte en la que ** debes optar por RESET en el PADRE de la confirmación en mal estado ** - extrañamente VS2017, justo después de hacer una confirmación, te ofrece una opción de menú que lleva a cabo el reinicio objetivo en la confirmación acabas de hacer (una operación no operativa) - Pasé unos minutos hasta que encontré tu publicación y me di cuenta de que debería haber restablecido [a] el compromiso principal. La opción de menú que es "Restablecer" está un poco mal redactada, parece que lo hará restablecer una confirmación en particular == implicando que debe usarse en esa confirmación. Si fuera Reset To, creo que lo habría entendido más rápido
Caius Jard
1
(@JH) Gracias por la respuesta. .. atCJ Gracias por el comentario. atJH Gracias por poner esa parte en negrita ... atEverybody ... esa es la parte en la que estaba atrapado ... y quiero decir atrapado. #freedom
granadaCoder
El nombre está en línea con la forma en que git llama al comando. Si ha editado archivos, también se restablecerán. Si tiene archivos preconfigurados, también se restablecerán. Es por eso que también hay un reinicio en la última confirmación. Se restablece a ese compromiso.
jessehouwing
1
Es útil saberlo. Gracias por la respuesta
Rob C
Muchas gracias, ayuda
Ashish Kamble
70

No pude encontrar una sola buena respuesta que me ayudara a deshacerme de este problema.

Digamos que el nombre de la rama en la que ha realizado cambios accidentalmente es master. Seguir cuatro sencillos pasos me resultó como un mundo:

  1. Ir a Ramas
  2. Elija o cree cualquier rama que no sea master
  3. Eliminar la versión local / del espacio de trabajo de master
  4. Cambiar a maestro desde remotes/origin
Legión del Caos
fuente
5
Esta es la respuesta que funciona, no tiene que presionar elrevert
sojim
2
esto funciona, pero está atascado cuando solo desea algunas (no todas) confirmaciones específicas de las confirmaciones salientes.
KatariaA
1
Recién recibí un par de votos negativos. Los comentarios habrían sido geniales.
Chaos Legion
1
Trabajos. Solución limpia, rápida y sencilla.
Tom Tom
2
Dios mío, gracias Nunca me he tomado 45 minutos para deshacer los cambios, hasta esta noche. Tu comentario salva el día.
PBJ
3

Suponiendo que ha enviado los cambios más recientes al servidor:

  1. Cierre Visual Studio y elimine su copia local del proyecto
  2. Abra Visual Studio, vaya a la pestaña Team Explorer, haga clic en Administrar conexiones. (enchufe)
  3. Haga clic en la flecha desplegable junto a Administrar conexiones, Conectarse a un proyecto
  4. Seleccione el proyecto, confirme la ruta local y haga clic en el botón Conectar.

Una vez que vuelva a abrir el proyecto, tanto las confirmaciones como los cambios deberían ser cero.

JB4375
fuente
1

TL; DR:

Usar git reset --soft HEAD~en el cmd de la carpeta .sln


Lo estaba enfrentando hoy y estaba abrumado de que VSCodesugiriera tal cosa, mientras que su hermano mayor Visual Studiono.

La mayoría de las respuestas fueron útiles; si tengo más confirmaciones que se hicieron antes, perderlas todas sería frustrante. Además, si lo VSCodehace en medio segundo, no debería ser complejo.

Solo la respuesta de jessehouwing fue la más cercana a una solución simple.


Suponiendo que los compromisos no deseados fueron los últimos en suceder, así es como lo resolví:

Vaya a Team Explorer-> Sync. Allí verías todas las confirmaciones. Presione el Actionsmenú desplegable yOpen Command Prompt

ejemplo no deseado-comprometido-resuelto

Se le pedirá la ventana cmd, escriba git reset --soft HEAD~. Si hay varias confirmaciones no deseadas, agregue la cantidad después de ~(es decir git reset --soft HEAD~5)


(Si no está usando git, verifique el uso coloquial).

Espero que ayude, y espero que en la próxima versión el equipo de VS lo agregue incorporado

Tzahi Leh
fuente
0

Vaya a la pestaña Team Explorer y luego haga clic en Ramas. En las sucursales, seleccione su sucursal desde remotos / origen. Por ejemplo, desea restablecer su rama maestra. Haga clic con el botón derecho en la rama maestra en remotos / origen, luego seleccione Restablecer y luego haga clic en Eliminar cambios. Esto restablecerá su sucursal local y eliminará todos los cambios confirmados localmente.

alexiscalingasan
fuente
0

Intente volver a establecer la base de su rama maestra local en su rama maestra remota / de origen y resuelva cualquier conflicto en el proceso.

orangeCl0uds
fuente
-1

Tiene 2 opciones aquí para hacer eso, ya sea para descartar todas sus confirmaciones salientes O para deshacer una confirmación específica.

1- Descarta todas tus confirmaciones salientes:

Para descartar todas sus confirmaciones salientes Por ejemplo, si tiene una rama local llamada master de una rama remota, puede:

1- Cambie el nombre de su rama local de maestra a cualquier cosa para que pueda eliminarla. 2- Eliminar la rama renombrada. 3- crea una nueva rama desde el maestro

Así que ahora tienes una nueva rama sin tus confirmaciones.

2- Deshacer un compromiso específico: Para deshacer un compromiso específico, debe revertir lo innecesario mediante:

1- Haga doble clic en el compromiso innecesario. Haga doble clic en el compromiso innecesario 2- Haga clic en revertir Haga clic en revertir

Pero para su información, la confirmación revertida aparecerá en el historial de sus confirmaciones con la confirmación revertida.

Mohammad Abu Saloum
fuente