Git: Sistema de Control de Versiones
Definición: Git es un sistema de control de versiones que guarda cambios específicos en archivos, permitiendo volver a versiones anteriores. Fue diseñado por Linus Torvalds.
Ventajas: Eficiencia con archivos de texto plano. No recomendado para archivos binarios grandes.
Malas Prácticas: Guardar archivos binarios en el repositorio de Git incrementa el tamaño innecesariamente. Es preferible usar un CDN para binarios.
Estados de Archivos en Git
Staged: Archivos preparados para commit.
Modified: Archivos modificados pero no preparados.
Committed: Archivos guardados en el historial de versiones.
GitHub: Plataforma de Desarrollo Colaborativo
Definición: GitHub es una plataforma para alojar proyectos utilizando Git, considerada como una red social de código para programadores.
Uso: Creación y gestión de proyectos de código fuente, colaboración entre desarrolladores.
Comandos Básicos de Git
Inicializar Repositorio: git init
Agregar Archivos al Staged: git add nombre_del_archivo.txt
Ver Estado: git status
Configuración: git config, git config --list, git config --list --show-origin
Eliminar Archivo del Staged: git rm --cached nombre_del_archivo.txt
Eliminar del Repositorio: git rm nombre_del_archivo.txt
Hacer Commit: git commit -m "mensaje"
Mostrar Cambios: git show
Ver Log: git log
Enviar Cambios a Repositorio Remoto: git push
Terminal Git Comandos Útiles:
Navegación: cd nombre_carpeta → para entrar a una carpeta
Ubicación Actual: pwd → para saber en qué carpeta estoy
Ver Contenido: ls → para ver la información de la carpeta
Crear Carpeta: mkdir → crear carpeta
Crear Archivo: touch → crear archivo
Mostrar Contenido: cat → mostrar el contenido de un archivo
Historial de Comandos: history → historial de comandos
Eliminar Archivo: rm → eliminar un archivo
Eliminar Directorio: rm -r directorio → eliminar un directorio y su contenido
Gestión de Ramas
Master: Rama principal con commits estables.
Development: Rama para experimentar.
Merge: Unir cambios de una rama a otra.
Hotfix: Cambios urgentes que deben desplegarse.
Comandos de Ramas:
git branch nombre_rama: Crear una nueva rama.
git checkout nombre_rama: Cambiar a una rama diferente.
git merge nombre_rama: Fusionar una rama con la actual.
git branch -d nombre_rama: Eliminar una rama.
Repositorio Remoto
Clonar Repositorio: git clone url
Enviar Cambios: git push
Traer Cambios: git fetch, git pull
Fusionar Cambios: git merge
Comandos Específicos:
git push origin main: Enviar cambios a la rama principal del repositorio remoto.
git pull origin main: Traer y fusionar cambios de la rama principal del repositorio remoto.
Seguridad con Llaves
Llaves Públicas y Privadas: Utilizadas para cifrar y descifrar mensajes durante el envío.
Crear y Eliminar Tags ejm. V0.1
Crear Tag: git tag -a v0.1 -m "mensaje"
Mostrar Tags: git show-ref --tags
Eliminar Tag: git tag -d v0.1, git push origin :refs/tags/v0.1
Pull Requests
Definición: Validación de código antes de hacer merge. Es una característica específica de GitHub.
Git Rebase y Stash
Rebase: git rebase para cambiar la historia de commits. → solo debe ser usado de manera local.
Stash: git stash para guardar cambios temporalmente.
Comandos de Stash:
git stash list: Ver lista de stashes.
git stash apply stash@{n}: Aplicar un stash específico.
git stash drop stash@{n}: Eliminar un stash específico.
git stash branch nombre_rama: Crear una nueva rama y aplicar el stash.
Cherry-Pick
Definición: Seleccionar y aplicar commits específicos a otra rama.
Comando: git cherry-pick NumeroCommit, git cherry-pick --abort
Reset y Reflog
Ver Historial de Commits: git reflog
Volver a una Versión Anterior: git reset --hard NumeroCommit
Git Amend
Definición: Modificar el último commit.
Comando: git commit --amend
Advertencia: No utilizar --amend para commits ya enviados al repositorio remoto.
**
Buscar en Archivos y Commits**
Buscar Palabra: git grep palabra
Buscar con Detalles: git grep -n palabra
Contar Ocurrencias: git -c palabra para contar las veces que aparece la palabra.
Configuración de Alias
Ejemplo: git config --global alias.stats “shortlog -sn --all --no-merges”
Otros Comandos Importantes
Git Diff: git diff para ver diferencias entre archivos.
Git Log con Stat: git log --stat para ver cambios específicos en cada commit.
Git Checkout: git checkout #commit para volver a una versión específica.
Git Clean: git clean --dry-run, git clean -f para eliminar archivos sin seguimiento.
Git Cherry-Pick: git cherry-pick NumeroCommit para aplicar commits específicos a otra rama.
Git Reset: git reset --hard NumeroCommit para volver a un commit anterior y recuperar cambios.
Git Grep: git grep palabra para buscar en archivos, git grep -n palabra para buscar en commits.