AdSense Placeholder
Slot: header_reference_page
Git registra instantáneas de un proyecto. Importan tres lugares: el árbol de trabajo (sus archivos), el área de preparación (lo que irá en el próximo commit) y el repositorio (el historial guardado). La mayoría de los comandos mueven cambios entre ellos. Todos los comandos de abajo se comprobaron con una instalación real de Git.
Comandos por tarea
Configurar
| Comando |
Qué hace |
git config --global user.name "Ana" |
Fija el nombre guardado en sus commits |
git init |
Crea un repositorio nuevo en esta carpeta |
git clone <url> |
Copia un repositorio remoto con su historial |
Guardar cambios
| Comando |
Qué hace |
git status |
Muestra archivos modificados, preparados y sin seguimiento |
git add <file> |
Prepara un archivo para el próximo commit (git add -p prepara fragmentos elegidos) |
git commit -m "message" |
Registra los cambios preparados con un mensaje |
git commit --amend |
Reescribe el último commit (mensaje o contenido); solo antes de publicarlo |
git diff |
Muestra los cambios sin preparar (--staged para los preparados) |
Ramas
| Comando |
Qué hace |
git branch |
Lista las ramas (-d nombre borra una ya fusionada) |
git switch <branch> |
Cambia a otra rama (-c nombre la crea antes) |
git merge <branch> |
Fusiona otra rama en la actual |
git rebase <branch> |
Reaplica sus commits sobre otra rama (-i edita, une, reordena) |
git cherry-pick <commit> |
Copia un commit en la rama actual |
Remotos
| Comando |
Qué hace |
git remote -v |
Lista los repositorios remotos y sus URL |
git fetch |
Descarga commits nuevos sin cambiar sus archivos |
git pull --rebase |
Descarga y reaplica sus commits locales encima (historial más limpio que una fusión) |
git push -u origin <branch> |
Publica una rama y la recuerda para git push a secas |
git push --force-with-lease |
Sobrescribe la rama remota solo si nadie más publicó entretanto |
Inspeccionar
| Comando |
Qué hace |
git log --oneline --graph |
Historial compacto con líneas de ramas |
git show <commit> |
Muestra un commit y sus cambios |
git blame <file> |
Muestra quién cambió cada línea por última vez |
git grep "text" |
Busca en los archivos con seguimiento |
git bisect start |
Busca por bisección el commit que rompió algo |
Deshacer
| Comando |
Qué hace |
git restore <file> |
Descarta cambios de un archivo (--staged lo saca de lo preparado) |
git revert <commit> |
Añade un commit nuevo que deshace uno antiguo; seguro en historial compartido |
git reset --soft HEAD~1 |
Deshace el último commit manteniendo sus cambios preparados |
git reset --hard <commit> |
Mueve la rama y descarta todos los cambios posteriores: destructivo |
git reflog |
Lista dónde ha estado HEAD; el camino de vuelta de la mayoría de errores |
git clean -fd |
Borra archivos y carpetas sin seguimiento; pruebe -n antes |
Stash y etiquetas
| Comando |
Qué hace |
git stash push -u |
Aparca su trabajo en curso, incluidos los archivos sin seguimiento |
git stash pop |
Recupera el último stash y lo elimina |
git tag -a v1.0 -m "Release" |
Marca una versión con una etiqueta anotada |
Deshacer errores
| Situación |
Solución |
| Edité un archivo y quiero la versión anterior |
git restore <file> |
| Preparé el archivo equivocado |
git restore --staged <file> |
| El mensaje de mi último commit tiene una errata |
git commit --amend |
| Hice commit en la rama equivocada |
git switch <rama-correcta>, git cherry-pick <commit> y luego git reset --hard HEAD~1 en la rama equivocada |
| Publiqué un commit malo que otros ya descargaron |
git revert <commit> |
| Hice un reset o rebase y perdí commits |
git reflog y luego git reset --hard <hash-anterior> |
Los comandos que reescriben el historial (reset --hard, rebase, push --force) son seguros con commits que solo usted tiene. Cuando otros ya los descargaron, prefiera git revert.
Buenos hábitos
- Haga commits pequeños y relacionados con un mensaje que diga por qué, en imperativo: «Corrige la redirección de inicio de sesión».
- Haga pull o fetch antes de push y use
--force-with-lease en lugar de --force.
- Mantenga los secretos fuera del repositorio. Una contraseña confirmada queda en el historial aunque borre el archivo. Use un
.gitignore para la salida de compilación y archivos locales: el Generador de .gitignore escribe uno para su stack.
- Use
git status constantemente. También le indica el siguiente comando.
Vea Git para la idea detrás de la herramienta y Guía rápida de la línea de comandos de Linux para los comandos de shell que usará junto a ella.