Aprender / Hoja de referencia
Hoja de referencia de Git para testers
Los comandos de Git que necesita un tester para trabajar en un framework de pruebas junto a los desarrolladores: crear ramas, hacer commits, mantenerse al día con main, deshacer errores sin perder trabajo y encontrar el commit que introdujo un bug. Se señalan los comandos que descartan trabajo.
Revisada con Git 2.40+
Configuración
| Tarea | Código |
|---|---|
| Tu identidad | git config --global user.name "Mei Lin" git config --global user.email "mei@example.com" |
| Nombre de la rama por defecto | git config --global init.defaultBranch main |
| Clonar un repositorio | git clone https://github.com/org/tests.git |
| Que pull haga rebase por defecto | git config --global pull.rebase true |
Trabajo diario
| Tarea | Código |
|---|---|
| ¿Qué ha cambiado? | git status |
| Rama nueva desde donde estás | git switch -c fix/login-flaky-wait |
| Añadir archivos al stage | git add tests/login.spec.ts |
| Añadir partes de un archivo | git add -p |
| Commit | git commit -m "Wait for login response instead of sleep" |
| Subir una rama nueva | git push -u origin fix/login-flaky-wait |
| Traer los últimos cambios | git pull |
| Cambiar de rama | git switch main |
Inspeccionar
| Tarea | Código |
|---|---|
| Historial compacto | git log --oneline --graph --decorate -20 |
| Historial de un archivo | git log --follow -p -- tests/login.spec.ts |
| Cambios sin añadir al stage | git diff |
| Cambios en el stage | git diff --staged |
| Tu rama frente a main | git diff main...HEAD |
| Un commit | git show 3f2a9c1 |
| Quién cambió estas líneas | git blame -L 20,40 tests/login.spec.ts |
| Todas las ramas | git branch -a |
Mantenerse al día con main
| Tarea | Código |
|---|---|
| Descargar sin cambiar archivos | git fetch origin |
| Reaplicar tus commits sobre main | git rebase origin/main |
| O hacer merge de main en tu rama | git merge origin/main |
| Después de resolver un conflicto | git add <file> then git rebase --continue |
| Abandonar el rebase | git rebase --abort |
| Subir con seguridad una rama rebasada | git push --force-with-lease |
| Copiar un commit a esta rama | git cherry-pick 3f2a9c1 |
Haz rebase solo de ramas que sean tuyas. --force-with-lease se niega a sobrescribir commits que haya subido otra persona.
Deshacer
| Situación | Comando |
|---|---|
| Descartar los cambios de un archivo (se pierden) | git restore tests/login.spec.ts |
| Sacar un archivo del stage, conservando los cambios | git restore --staged tests/login.spec.ts |
| Corregir el mensaje del último commit o añadir un archivo | git commit --amend |
| Deshacer el último commit, dejando los cambios en el stage | git reset --soft HEAD~1 |
| Deshacer un commit ya subido (añade un commit nuevo) | git revert 3f2a9c1 |
| Tirar todos los cambios locales (se pierden) | git reset --hard HEAD |
| Encontrar un commit "perdido" | git reflog |
En ramas compartidas, usa revert. reset y amend reescriben el historial y obligan a todos los demás a arreglar su copia.
Aparcar trabajo
| Tarea | Código |
|---|---|
| Guardar cambios en el stash | git stash push -m "half-done locator refactor" |
| Incluir archivos sin seguimiento | git stash push -u |
| Listar los stashes | git stash list |
| Reaplicar y eliminar el último | git stash pop |
Encontrar el commit que lo rompió
| Tarea | Código |
|---|---|
| Empezar | git bisect start |
| Marcar el commit actual como malo | git bisect bad |
| Marcar un commit que se sabe bueno | git bisect good v2.3.0 |
| Que un test decida en cada paso | git bisect run npx playwright test tests/checkout.spec.ts |
| Terminar y volver | git bisect reset |
bisect run trata el código de salida 0 como bueno y del 1 al 127 como malo (125 significa saltar este commit).