En esta guía
Empezar un repositorio
git init # convierte la carpeta actual en un repo
git clone <url> # copia un repo remoto a una carpeta nueva
git clone <url> mi-carpeta # igual, eligiendo el nombre de la carpeta
El ciclo
git status # qué cambió y en qué estado está
git add hola.sh # pasa un archivo a staging
git commit -m "Agrega script hola.sh"
git log --oneline # historial resumido
Revisar antes de guardar
| Comando |
Qué muestra |
git status |
Archivos modificados, en staging y sin seguimiento |
git status -sb |
Lo mismo, en formato corto |
git diff |
Cambios que no están en staging |
git diff --staged |
Cambios que entrarán en el próximo commit |
git diff main..feature |
Diferencias entre dos ramas |
Preparar cambios
| Comando |
Qué hace |
git add archivo |
Añade un archivo a staging |
git add . |
Añade todo lo de la carpeta actual hacia abajo |
git add -p |
Permite elegir fragmento por fragmento |
git restore --staged archivo |
Saca un archivo de staging sin perder los cambios |
Guardar
| Comando |
Qué hace |
git commit -m "Mensaje" |
Crea un commit con lo que hay en staging |
git commit |
Abre el editor para escribir un mensaje largo |
git commit -am "Mensaje" |
Añade los archivos ya seguidos y hace commit. No incluye archivos nuevos |
Un buen mensaje dice qué cambia y por qué, en una línea de menos de 70 caracteres. Si hace falta más detalle, va en el cuerpo tras una línea en blanco.
Consultar el historial
| Comando |
Qué muestra |
git log --oneline |
Un commit por línea |
git log --oneline --graph --all |
El grafo con todas las ramas |
git log -p archivo |
Historial de un archivo con sus cambios |
git log --author="Ana" --since="2 weeks ago" |
Filtrado por autor y fecha |
git show <hash> |
El contenido de un commit |
git blame archivo |
Quién cambió cada línea por última vez |
Mover y borrar archivos
git mv viejo.txt nuevo.txt # renombra y lo deja en staging
git rm archivo.txt # borra el archivo y registra el borrado
git rm --cached archivo.txt # deja de seguirlo sin borrarlo del disco
Ignorar archivos
El archivo .gitignore en la raíz del repo lista lo que Git no debe seguir.
node_modules/
dist/
.env
*.log
!importante.log
| Patrón |
Ignora |
carpeta/ |
Una carpeta completa |
*.log |
Todos los archivos con esa extensión |
/archivo |
Solo el de la raíz del repo |
!archivo |
Excepción: no ignorar este |
.gitignore no afecta a archivos que ya están en el historial. Para dejar de seguir uno hay que usar git rm --cached archivo y hacer commit.