remove - git tag best practices
Deseche los compromisos locales en git. (10)
Debido a una mala selección de cerebros, mi repositorio local de git está actualmente 5 confirmados antes del origen, y no está en buen estado. Quiero deshacerme de todos estos compromisos y empezar de nuevo.
Obviamente, eliminar mi directorio de trabajo y volver a clonarlo lo haría, pero descargar todo de github de nuevo parece una exageración, y no es un buen uso de mi tiempo.
Tal vez git revert
es lo que necesito, pero no quiero terminar 10 confirmaciones antes del origen (o incluso 6), incluso si el código vuelve al estado correcto. Solo quiero fingir que la última media hora nunca pasó.
¿Hay un comando simple que hará esto? Parece un caso de uso obvio, pero no encuentro ningún ejemplo de ello.
Tenga en cuenta que esta pregunta es específicamente sobre compromisos , no sobre:
- archivos sin seguimiento
- cambios sin etapas
- Cambios en escena pero no comprometidos
Eliminar la confirmación más reciente:
git reset --hard HEAD~1
Elimine la confirmación más reciente, sin destruir el trabajo que ha realizado:
git reset --soft HEAD~1
En su intento de rama:
git reset --hard origin/<branch_name>
Valide la reversión (al estado, sin confirmaciones locales), usando " git log
" o " git status
" por lo tanto.
Para confirmaciones locales que no se están git rebase -i
también puede usar git rebase -i
para eliminar o aplastar una confirmación.
Para ver / obtener el ID de sha1 de la confirmación, también desea volver
gitk --all
Para volver a ese compromiso
git reset --hard sha1_id
!Nota. Todas las confirmaciones que se hicieron después de esa confirmación se eliminarán (y todas sus modificaciones al proyecto). Así que primero es mejor clonar el proyecto en otra rama o copiar en otro directorio.
Si está utilizando la aplicación Atlassian SourceTree , puede usar la opción de restablecimiento en el menú contextual.
Si sus confirmaciones en exceso solo son visibles para usted, solo puede hacer git reset --hard origin/<branch_name>
para regresar a donde está el origen.
Hacer un git revert
hace nuevos compromisos para eliminar los compromisos viejos de una manera que mantiene la historia de todos sanos.
Simplemente elimine su rama maestra local y vuelva a crearla así:
git branch -D master
git checkout origin/master -b master
Tratar:
git reset --hard <the sha1 hash>
para restablecer tu cabeza a donde quieras estar. Usa gitk para ver en qué compromiso quieres estar. Puedes hacer reset dentro de gitk también.
Tuve una situación en la que quise eliminar el compromiso que no se presionó, pero el compromiso fue anterior a otro. Para ello he utilizado el siguiente comando.
git rebase -i HEAD~2
-> rebase los últimos 2 confirmaciones
y utilicé ''drop'' para la firma de confirmación que quería eliminar.
git reset --hard @{u}
* elimina todos los cambios locales en la rama actual, incluidos los confirmaciones. Me sorprende que nadie haya publicado esto todavía, teniendo en cuenta que no tendrá que buscar el compromiso para volver o jugar con las sucursales.
* Es decir, restablecer a la rama actual en @{upstream}
—como origin/<branchname>
, pero no siempre