Manual GIT
Manual GIT
1. Conceptos Fundamentales
¿Qué es Git?
Git es un sistema de control de versiones distribuido que permite rastrear cambios en archivos a lo largo
del tiempo. Fue creado por Linus Torvalds en 2005 para el desarrollo del kernel de Linux.
Conceptos Clave
1. Repositorio: Proyecto que contiene todos los archivos y su historial completo.
2. Working Directory: Directorio de trabajo actual donde modificas tus archivos.
3. Staging Area: Área intermedia donde preparas los cambios para un commit.
4. Commit: Instantánea de tus cambios en un momento específico.
5. Branch (Rama): Línea independiente de desarrollo.
6. Remote (Remoto): Versión del repositorio alojada en un servidor (ej: GitHub).
7. HEAD: Apuntador que indica el último commit de la rama actual.
2. Configuración Inicial
Instalación
# Windows
# Descarga el instalador de https://git-scm.com/download/win
# Linux (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install git
Configuración Básica
# Configurar nombre y email (obligatorio)
git config --global user.name "Tu Nombre"
git config --global user.email "[email protected]"
Comandos Básicos
# Ver estado del repositorio
git status # Estado detallado
git status -s # Estado resumido
# Crear commit
git commit -m "mensaje descriptivo"
git commit -am "mensaje" # Add + commit para archivos tracked
# Ver historial
git log # Historial completo
git log --oneline # Formato resumido
git log --graph # Con gráfico de ramas
git log -p # Con diferencias
git log --stat # Con estadísticas
# Ver cambios
git diff # Cambios en working directory
git diff --staged # Cambios en staging area
git diff HEAD # Todos los cambios
# Crear ramas
git branch nombre-rama # Crear rama
git checkout -b nombre-rama # Crear y cambiar
git checkout -b feature origin/feature # Desde remoto
# Eliminar ramas
git branch -d rama # Eliminar rama (seguro)
git branch -D rama # Forzar eliminación
# Renombrar ramas
git branch -m viejo-nombre nuevo-nombre
# Probar conexión
ssh -T [email protected]
Operaciones con Remotos
# Ver remotos
git remote -v
# Añadir remoto
git remote add origin https://github.com/usuario/repo.git
# Subir cambios
git push origin rama
git push -u origin rama # Primera vez
git push --force # Forzar push (¡usar con cuidado!)
# Obtener cambios
git fetch origin # Obtener sin integrar
git pull origin rama # Obtener e integrar
git pull --rebase # Pull con rebase
# En staging area
git reset HEAD archivo # Quitar de staging
git restore --staged archivo # Nuevo comando
# Deshacer commits
git reset --soft HEAD~1 # Mantener cambios en staging
git reset --mixed HEAD~1 # Mantener cambios sin staging
git reset --hard HEAD~1 # Eliminar cambios (¡cuidado!)
# Revertir commits
git revert commit-hash # Crear nuevo commit que deshace cambios
# Gestionar stash
git stash list # Ver lista de stashes
git stash show # Ver cambios en último stash
git stash pop # Aplicar y eliminar último stash
git stash apply # Aplicar sin eliminar
git stash drop # Eliminar último stash
git stash clear # Eliminar todos los stashes
8. Resolución de Conflictos
¿Qué es un Conflicto?
Un conflicto ocurre cuando Git no puede resolver automáticamente diferencias entre ramas.
Proceso de Resolución
1. Git marca los archivos con conflictos
2. Abres los archivos y ves:
<<<<<<< HEAD
tus cambios
=======
cambios de otra rama
>>>>>>> feature
# Abortar merge
git merge --abort
# Abortar rebase
git rebase --abort
# Herramientas de merge
git mergetool
9. Buenas Prácticas
Commits
1. Mensajes Claros
o Primera línea: resumen conciso (50 chars)
o Línea en blanco
2. Convención de Mensajes
tipo(alcance): mensaje
Tipos:
- feat : nueva característica
- fix : corrección de bug
- docs : documentación
- style : formato
- refactor : refactorización
- test : pruebas
- chore : mantenimiento
.gitignore
# Ejemplo de .gitignore
node_modules/
*.log
.env
.DS_Store
dist/
GitHub Actions
# Ejemplo básico de CI
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run tests
run: |
npm install
npm test
GitHub Pages
1. Configurar en Settings > Pages
2. Elegir rama y directorio
3. GitHub genera URL automáticamente
- GitKraken
- Sourcetree
- VS Code Git
Aliases Útiles
[alias]
s = status -s
l = log --oneline --graph --decorate
ca = commit --amend
co = checkout
br = branch
unstage = reset HEAD --
last = log -1 HEAD
sync = !git pull origin main && git push origin main
Git Hooks
# .git/hooks/pre-commit
#!/bin/sh
npm run lint
npm test
Limpiar Repositorio
# Eliminar archivos untracked
git clean -n # Ver qué se eliminaría
git clean -f # Eliminar
git clean -fd # Incluir directorios
# Comandos disponibles:
# p, pick = usar commit
# r, reword = cambiar mensaje
# e, edit = editar commit
# s, squash = combinar con anterior
# f, fixup = combinar sin mensaje
# d, drop = eliminar commit
Submodules
# Añadir submodule
git submodule add https://github.com/user/repo
# Inicializar submodules
git submodule init
git submodule update
Cherry-pick
# Aplicar commit específico
git cherry-pick commit-hash
# Múltiples commits
git cherry-pick commit1..commit2
14. Recursos Adicionales
Documentación
- Git Documentation
- GitHub Guides
Herramientas Online
- GitHub
- GitLab
- Bitbucket
Práctica
- GitHub Learning Lab