0% encontró este documento útil (0 votos)
11 vistas9 páginas

Manual GIT

La guía completa de Git y GitHub cubre desde conceptos fundamentales como repositorios y ramas, hasta operaciones avanzadas como rebase y cherry-pick. Incluye instrucciones para la instalación, configuración, manejo de cambios, resolución de conflictos y buenas prácticas en el uso de Git. También aborda aspectos específicos de GitHub, como pull requests y GitHub Actions, además de recursos adicionales para profundizar en el aprendizaje.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas9 páginas

Manual GIT

La guía completa de Git y GitHub cubre desde conceptos fundamentales como repositorios y ramas, hasta operaciones avanzadas como rebase y cherry-pick. Incluye instrucciones para la instalación, configuración, manejo de cambios, resolución de conflictos y buenas prácticas en el uso de Git. También aborda aspectos específicos de GitHub, como pull requests y GitHub Actions, además de recursos adicionales para profundizar en el aprendizaje.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

Guía Completa de Git y GitHub

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

# macOS con Homebrew


brew install git

# 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]"

# Configurar editor predeterminado (opcional)


git config --global core.editor "code --wait" # Para VS Code
git config --global core.editor "vim" # Para Vim

# Configurar rama principal


git config --global init.defaultBranch main

# Ver configuración actual


git config --list
3. Iniciar un Proyecto
Crear Nuevo Repositorio
# Método 1: Iniciar nuevo repositorio
mkdir mi-proyecto
cd mi-proyecto
git init

# Método 2: Clonar repositorio existente


git clone https://github.com/usuario/repositorio.git
git clone [email protected]:usuario/repositorio.git # Con SSH

Estructura de un Repositorio Git


mi-proyecto/
├── .git/ # Directorio Git (no tocar manualmente)
├── .gitignore # Archivos a ignorar
├── README.md # Documentación principal
└── src/ # Código fuente

4. Operaciones Básicas Diarias


Estados de los Archivos
1. Untracked: Git no rastrea el archivo
2. Tracked: Git rastrea el archivo
o Modified: Modificado pero no preparado

o Staged: Preparado para commit

o Committed: Guardado en el historial

Comandos Básicos
# Ver estado del repositorio
git status # Estado detallado
git status -s # Estado resumido

# Añadir archivos al staging area


git add archivo.txt # Archivo específico
git add . # Todos los archivos
git add src/*.js # Con patrones
git add -p # Añadir cambios interactivamente

# 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

5. Trabajo con Ramas


Conceptos de Ramas
- Las ramas permiten desarrollo paralelo

- Cada rama es un puntero móvil a un commit

- main es la rama principal por defecto

Operaciones con Ramas


# Ver ramas
git branch # Listar ramas locales
git branch -a # Listar todas las ramas
git branch -v # Ver último commit de cada rama

# Crear ramas
git branch nombre-rama # Crear rama
git checkout -b nombre-rama # Crear y cambiar
git checkout -b feature origin/feature # Desde remoto

# Cambiar entre ramas


git checkout rama
git switch rama # Nuevo comando recomendado

# 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

6. Trabajo con Remotos


Configuración SSH
# Generar clave SSH
ssh-keygen -t ed25519 -C "[email protected]"

# Ver clave pública


cat ~/.ssh/id_ed25519.pub

# 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

7. Gestión de Cambios Avanzada


Deshacer Cambios
# En working directory
git checkout -- archivo # Descartar cambios
git restore archivo # Nuevo comando recomendado

# 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

Stash (Guardado Temporal)


# Guardar cambios
git stash # Guardar cambios
git stash save "mensaje" # Guardar con mensaje
git stash -u # Incluir untracked files

# 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

3. Editas manualmente para resolver


4. git add los archivos resueltos
5. git commit para finalizar

Comandos Útiles en Conflictos


# Ver archivos en conflicto
git status

# 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

o Descripción detallada (opcional)

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

Flujo de Trabajo Git Flow


3. main: Código en producción
4. develop: Desarrollo activo
5. feature/: Nuevas características
6. hotfix/: Correcciones urgentes
7. release/: Preparación de versiones

.gitignore
# Ejemplo de .gitignore
node_modules/
*.log
.env
.DS_Store
dist/

10. GitHub Específico


Pull Requests (PR)
1. Fork repositorio (si es necesario)
2. Crear rama para cambios
3. Hacer cambios y commits
4. Crear PR en GitHub
5. Esperar review y comentarios
6. Hacer cambios solicitados
7. Merge cuando esté aprobado

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

11. Herramientas y Tips


Git GUI Clients
- GitHub Desktop

- 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

12. Solución de Problemas Comunes


Error de Merge
# Abortar merge
git merge --abort

# Reintentar con estrategia diferente


git merge -X theirs rama
git merge -X ours rama

Commit en Rama Equivocada


# 1. Crear nueva rama con estado actual
git branch nueva-rama
# 2. Deshacer commit en rama actual
git reset HEAD~1 --hard

# 3. Cambiar a nueva rama


git checkout nueva-rama

Restaurar Archivo Eliminado


# Ver último commit que afectó al archivo
git log -- archivo

# Restaurar versión específica


git checkout commit-hash -- archivo

Limpiar Repositorio
# Eliminar archivos untracked
git clean -n # Ver qué se eliminaría
git clean -f # Eliminar
git clean -fd # Incluir directorios

13. Git Avanzado


Rebase Interactivo
# Últimos N commits
git rebase -i HEAD~N

# 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

# Actualizar todos los submodules


git submodule update --remote

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

- Pro Git Book

Herramientas Online
- GitHub

- GitLab

- Bitbucket

Práctica
- GitHub Learning Lab

- Learn Git Branching

También podría gustarte