Chuleta de Git

Encuentra el comando de Git adecuado según lo que quieras hacer, cópialo con un clic y deja que el asistente de soluciones escriba los pasos exactos para rescates habituales como deshacer un commit, renombrar una rama o combinar commits.

Última actualización:

Publicidad
Publicidad

Cómo usar Chuleta de Git

  1. Busca o explora: escribe lo que quieres hacer (undo, rename, stash, tag) o elige una pestaña de categoría.
  2. Copia un comando con el botón Copiar y sustituye los marcadores resaltados, como <branch>, por tus propios valores.
  3. Usa el asistente de soluciones cuando estés en una situación concreta: elígela en la lista, responde a las preguntas y rellena tus nombres.
  4. Sigue los pasos generados en orden. Cópialos de uno en uno o todos a la vez, y lee cualquier advertencia antes de ejecutar un comando marcado como peligroso.
  5. Descarga la chuleta como archivo Markdown para tenerla junto a tu proyecto.

git reset vs git revert vs git restore

Estos tres comandos "deshacen" algo, por eso es fácil confundirlos. La pregunta clave es si el commit ya se ha compartido.

ComandoQué cambia¿Reescribe el historial?Úsalo cuando
git restore <file>Los archivos de trabajo (o el área de preparación con --staged)NoQuieres descartar o quitar de la preparación cambios que aún no tienen commit
git reset --soft HEAD~1Mueve la rama hacia atrás; los cambios siguen preparadosSíEl último commit es local y quieres rehacerlo
git reset HEAD~1 (mixto)Mueve la rama hacia atrás; los cambios siguen en tus archivos, sin prepararSíQuieres dividir o volver a preparar el trabajo de un commit local
git reset --hard HEAD~1Mueve la rama hacia atrás y borra los cambiosSíQuieres eliminar el commit y su trabajo (solo recuperable mediante reflog)
git revert <commit>Añade un commit nuevo con los cambios opuestosNoEl commit ya está subido a una rama que usan otras personas

Cómo mueve Git tus cambios

Git guarda tu trabajo en cuatro lugares. La mayoría de los comandos mueven cambios de un lugar al siguiente:

  1. Directorio de trabajo: los archivos que editas. git restore descarta los cambios aquí.
  2. Área de preparación (índice): lo que irá en el próximo commit. git add mete cambios y git restore --staged los saca.
  3. Repositorio local: tus commits. git commit registra la instantánea preparada; git reset mueve hacia atrás el puntero de la rama.
  4. Repositorio remoto: la copia compartida, como GitHub o GitLab. git push sube commits, git fetch los descarga y git pull los descarga y fusiona.

Cómo leer las referencias HEAD~ y HEAD^

ReferenciaSignifica
HEADEl commit que tienes actualmente en checkout
HEAD~1 or HEAD~El padre de HEAD (un commit atrás)
HEAD~3Tres commits atrás, siguiendo los primeros padres
HEAD^2El segundo padre de un commit de fusión (la rama que se fusionó)
main..featureCommits en feature que no están en main
origin/mainTu última copia descargada de main en el remoto llamado origin
@{u}La rama upstream de la rama actual
stash@{0}La entrada de stash más reciente

Una regla breve que evita la mayoría de los desastres con Git: reescribe el historial (reset, commit --amend, rebase) solo en commits que no existan en ningún sitio salvo tu ordenador o tu propia rama, y usa git revert para todo lo que otros puedan haber descargado ya.

Preguntas frecuentes

¿Cómo deshago el último commit en Git?

Si no lo has subido, ejecuta git reset --soft HEAD~1 para quitar el commit pero conservar sus cambios preparados, o git reset HEAD~1 para conservarlos sin preparar. Si el commit ya está subido a una rama compartida, ejecuta en su lugar git revert HEAD, que añade un commit nuevo que deshace los cambios sin reescribir el historial.

¿Qué diferencia hay entre git reset y git revert?

git reset mueve hacia atrás el puntero de la rama y quita commits del historial de la rama, así que solo debe usarse con commits que nadie más tenga. git revert crea un commit nuevo que aplica los cambios opuestos, así que el historial se conserva y es seguro en ramas ya subidas.

¿Cómo renombro una rama de Git en local y en el remoto?

Renómbrala en local con git branch -m old-name new-name, sube el nuevo nombre con git push origin -u new-name y luego borra la rama remota antigua con git push origin --delete old-name. Tus compañeros deberían ejecutar después git fetch --prune y cambiar a la nueva rama.

¿Qué diferencia hay entre git fetch y git pull?

git fetch descarga los commits y ramas nuevos del remoto, pero no cambia tus archivos de trabajo. git pull ejecuta un fetch y luego fusiona (o hace rebase, con --rebase) la rama remota en tu rama actual.

¿Es peligroso git push --force?

Sobrescribe la rama remota con la tuya local, lo que puede borrar commits que otras personas subieron. Es mejor usar git push --force-with-lease, que se niega a sobrescribir el remoto si tiene commits que no has descargado, y nunca forzar un push a una rama main compartida.

¿Uso git switch o git checkout?

Ambos funcionan. git switch (para ramas) y git restore (para archivos) se añadieron en Git 2.23 para repartir las muchas funciones de git checkout en comandos más claros. git checkout sigue funcionando en todas las versiones, por eso lo usan los tutoriales y scripts más antiguos.

¿Puedo recuperar una rama o un commit que borré?

Normalmente sí. Ejecuta git reflog para ver a dónde ha apuntado HEAD recientemente, busca el hash del commit de antes del borrado y ejecuta git branch recovered-name <hash>. Las entradas del reflog se conservan 90 días por defecto, así que actúa antes de que la recolección de basura las elimine.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Entornos de prueba de código →