
Lo sé, lo sé, git revert
pero acabo de enterarme de que no se comporta exactamente igual que svn revert
, al menos, no en Visual Studio 2015, o tal vez no en TortoiseGit. Lo explicaré:
Soy nuevo en VS2015 y también nuevo en Git. Cuando descubrí que VS2015 tiene integración con Git desde el primer momento, lo probé. Sin embargo, estaba trabajando en varios archivos y estaba listo para enviar solo uno de ellos. Desafortunadamente, el filtro que apliqué en el panel de Team Explorer no se aplicó a los archivos confirmados (supongo que por eso el título del botón es "Confirmar todo"). En cambio, confirmó todos los archivos "sucios". ¡Uy!
Recurriendo a TortoiseGit para ver el registro de mi repositorio, seleccioné la confirmación (local) más reciente y la revertí mediante "Revertir cambios mediante esta confirmación". Esperaba que esta operación revirtiera los archivos en los que estaba trabajando al estado "sucio" en el que se encontraban antes de realizar la confirmación, como lo que hace SVN Revert, pero para mi sorpresa, la operación revirtió mis archivos locales a el anteriorrepositorioversión, no al estado en el que se encontraban antes de que yo los cometiera.
Por supuesto, pude recuperar mi trabajo porque estaba todo en la revisión de "todos los archivos" que había comprometido originalmente. Simplemente me puse a trabajar para copiar cada archivo al directorio que le corresponde. ¿Pero qué me falta aquí? ¿Existe alguna característica de Git que debería haber usado en lugar de Revertir?
Respuesta1
En Git, puedes eliminar una confirmación completa. Preferiblemente, solo harías esto con las confirmaciones que no se envían. Toda la parte "distribuida" de Git lo hace posible. Con SVN, sus cambios están inmediatamente disponibles para otros. Con Git, solo están disponibles una vez que se presionan ("Sincronizar" en Visual Studio).
Entonces, en lugar de revertir la confirmación (lo que significa que los cambios erróneos permanecerían en el repositorio y pueden tener efectos secundarios inesperados), hazlo git reset --mixed HEAD~1
. Esto significa que su directorio de trabajo permanecerá como está, pero se eliminará la última confirmación. Eso significa que Git mostrará todos los archivos modificados nuevamente.
Revertir en Git crea una confirmación "inversa" de la confirmación que revertiste, deshaciendo todos los cambios.
Luego, para confirmar solo un archivo, primero verifique git status
que Git no tenga cambios no deseados en preparación. Luego, utilícelo git add path/to/file.txt
para preparar (solo) ese archivo. Después de eso, simplemente ejecute git commit
, use un mensaje de confirmación apropiado y listo.
Cuando ejecuta git commit
y aparece el editor de texto, el archivo también contiene una lista de cambios que se confirmarán. Inspeccione cuidadosamente esta lista para asegurarse de que solo confirma lo que desea.
Además, no utilice Visual Studio para trabajar activamente con Git. Intenta aplicar términos TFS heredados a las operaciones de Git, pero no son lo mismo. En su lugar, intenta aprender Git en la consola. Visual Studio tiene algunas ventajas interesantes para el trabajo de solo lectura, como una excelente vista de diferencias.