Estas herramientas te permitirán usar Git para tu propio uso. No te preocupes por las ramas por ahora, solo haz todo en la rama principal (Main).
Conceptos a entender perfectamente:
- ¿Cuál es la diferencia entre Git y Github?
- ¿Qué es un commit?
- ¿Qué es la fase de preparación (staging)?
- ¿Qué es una rama?
- ¿Qué es el repositorio remoto versus el repositorio local?
- ¿Cómo configurar uno o más repositorios ascendentes?
- ¿Cómo hacer un commit?
- ¿Cómo hacer push/pull a un repositorio ascendente?
Comandos que debes conocer perfectamente:
git init
git clone <repository>
git status
git add <file>
git add --all
git commit
git remote add
git remote set-url
git remote -v
git push <repository> <branch>
git pull <repository> <branch>
Estas herramientas te permitirán sentirte más cómodo con Git como herramienta de trabajo. También necesitaremos aprender un poco de configuración.
Conceptos a entender perfectamente:
- El archivo .gitignore
- El archivo .gitconfig
- Ver el registro de commits
- Manipulación de archivos con Reset, Clean, Checkout <file>, Rm
- Manipulación del repositorio con Stash
Comandos que debes conocer perfectamente:
git log (con y sin --stat)
git checkout <file>
git reset <file> (¡PELIGROSO!)
git reset --hard (¡PELIGROSO!)
git clean -f (¡PELIGROSO!)
git rm <file> (¡PELIGROSO!)
git config --global user.name
git config --global user.email
git stash
git stash apply
git stash clear (Algo peligroso)
Esto te permitirá comenzar a colaborar con otras personas. Necesitas dominar este nivel ANTES de intentar cualquier colaboración.
Conceptos a entender perfectamente:
- Ramas: Qué son, por qué existen, cómo usarlas.
- Merging (fusión)
- Convenciones para nombrar ramas
- Cómo escribir buenos mensajes de commit
- ¿Qué son los repositorios bifurcados (forked)?
Comandos que debes conocer perfectamente:
git merge
git branch
git checkout <branch>
git checkout -b
git blame <file>
Separé el "rebase a la rama colaborativa" porque añade el primer comando que puede dañar tu repositorio remoto: git push --force-with-lease
.
De hecho, si estás haciendo rebase de tu rama local, necesitarás hacer push con esta opción a tu repositorio remoto. Así que es peligroso, pero aún necesitas dominar esta parte si colaboras en un equipo.
También agrego pull requests aquí, porque son un concepto importante pero son más un concepto de Github/Gitlab que realmente un concepto de Git.
Conceptos a entender perfectamente:
- Rebase simple (y cómo se diferencia de merging)
- ¿Qué son los pull requests?
- Cómo hacer un PR de rama a rama
- Cómo hacer un PR de un fork al repositorio original
Comandos que debes conocer perfectamente:
git rebase
git push --force-with-lease (¡PELIGROSO!)
Este nivel te permite organizar mejor tu historial de trabajo, organizar tus ramas y navegar por tu historial con facilidad.
Conceptos a entender perfectamente:
- Cómo reescribir tu historial local
- Cómo hacer rebase interactivo
- Gestión de ramas (prune, fetch)
- Uso de notación HEAD o hashes de commit
- Usar Diff para comparar commits
- Cómo revertir un commit
Comandos que debes conocer perfectamente:
git commit --amend
git rebase -i
git prune
git fetch
git remote prune
git checkout HEAD/HEAD~1/<commit hash>
git diff <commit hash 1> <commit hash 2>
git revert <commit hash>
En este nivel, puedes solucionar problemas cuando tú o alguien más comete un error.
Conceptos a entender perfectamente:
- ¿Qué es el reflog?
- Cómo limpiar datos sensibles del repositorio
- Cómo buscar eficazmente commits defectuosos
Comandos que debes conocer perfectamente:
git reflog
git-filter-branch
git-filter-repo
git bisect
Como una gran alternativa a los comandos git-filter, recomiendo BFG.
Espero que esta guía te haya ayudado a navegar la traicionera ruta que es aprender Git por primera vez.
¡Feliz codificación!
Jorge García
Fullstack developer