Volver a la página principal
lunes 29 julio 2024
5

Cómo aprender Git desde cero

I - Uso básico en solitario

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>

II - Herramientas básicas

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)

III - Colaboración básica

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>

IV - Colaboración básica: Rebase y Pull requests

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!)

V - Nivel competente

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>

VI - Nivel avanzado

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.

Conclusión

Espero que esta guía te haya ayudado a navegar la traicionera ruta que es aprender Git por primera vez.

¡Feliz codificación!

Etiquetas:
git
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer