Git
Git es un sistema de control de versiones. Esta página reúne los comandos que uso con más frecuencia y algunos flujos de trabajo seguros.
Configuración
Ver la configuración efectiva:
| |
Configuración básica para un equipo nuevo:
| |
Cambiar la URL remota de un repositorio:
| |
Ramas
Consultar la rama actual y las ramas disponibles:
| |
Cambiar a una rama ya existente:
| |
Crear una rama y cambiarse a ella:
| |
Registrar cambios
Antes de crear un commit, revisar qué se ha modificado:
| |
Añadir los cambios y confirmar el trabajo:
| |
Evitar git add . cuando no se haya revisado el estado: puede incluir archivos que no deberían formar parte del commit.
Conventional Commits
Conventional Commits propone un formato consistente para los mensajes de commit:
| |
feat: nueva funcionalidad.fix: corrección de un error.refactor: mejora interna sin cambiar el comportamiento esperado.docs: cambios en la documentación.test: añadir o ajustar pruebas.chore: tareas rutinarias, mantenimiento o configuración sin afectar al código fuente.style: cambios de formato que no afectan a la lógica.build: cambios en la construcción, dependencias o empaquetado.ops: cambios operacionales, por ejemplo IaC o CI/CD.perf: mejora de rendimiento.
Un buen commit explica qué cambió y por qué. Para más ejemplos, consultar la guía de tipos de commit.
Sincronizar con el remoto
Enviar la rama actual al remoto:
| |
Traer e integrar los cambios remotos. Con pull.rebase=true, configurado arriba, Git reubica los commits locales sobre la última versión remota:
| |
Una pull request permite revisar los cambios antes de integrarlos en otra rama. Conviene comprobar el diff, las pruebas y los comentarios antes de aprobarla.
Reescribir el último commit
Para incluir cambios olvidados sin modificar el mensaje del último commit:
| |
Para cambiar su mensaje:
| |
Si el commit ya se había publicado, habrá que actualizar el remoto. Preferir siempre --force-with-lease, que evita sobrescribir trabajo remoto que no tenemos localmente:
| |
Warning
Reescribir historial compartido puede complicar el trabajo de otras personas. Confirmar antes que nadie depende de esos commits.
Unir commits con rebase interactivo
Para unir los tres últimos commits en uno:
| |
En el editor, dejar el primer commit como pick y cambiar los siguientes a squash (o s). Guardar, cerrar y editar el mensaje del nuevo commit. Si esos commits ya estaban en el remoto, publicar el historial reescrito:
| |
Rebase de una rama sobre main
Actualizar la rama base y reubicar una rama de trabajo sobre ella:
| |
Si termina con Successfully rebased and updated refs/heads/TICKET-123., el rebase ha finalizado correctamente. Después se puede actualizar la rama remota:
| |
Si aparecen conflictos, Git indicará los archivos afectados. Resolverlos, validar el resultado y continuar:
| |
Para aceptar por completo una versión durante un rebase:
| |
En un rebase, el significado de ours y theirs puede resultar contraintuitivo: revisar siempre el contenido del archivo antes de añadirlo. Si se quiere cancelar todo el proceso y volver al estado anterior:
| |
Cambios temporales con stash
Listar los cambios guardados:
| |
Guardar los cambios actuales, opcionalmente con un comentario:
| |
Aplicar el último stash, uno concreto, o aplicarlo y eliminarlo:
| |
Eliminar un stash o todos los stashes:
| |
Recuperar el estado remoto
Tras un force push de otra persona, primero revisar qué cambiaría:
| |
Si se quiere descartar los cambios locales de main y dejarla igual que el remoto:
| |
Warning
git reset --harddescarta los cambios locales no confirmados. Guardarlos o usargit stashantes si se necesitan.
Tags
Crear y publicar un tag:
| |
Eliminar un tag local y remoto:
| |