Git والتحكم في الإصدارات: الأوامر الأساسية وسير العمل
Git هي أداة fundamental لـ modern software development. يغطي هذا الدليل comandos básicos de Git واستراتيجيات branching وworkflows.
آخر تحديث:ما هو Git ولماذا استخدامه؟
Git هو sistema de control de versiones distribuido. rastrea cambios de código، gestiona diferentes versiones y facilita colaboración en equipo.
Estructura distribuida: cada desarrollador tiene una copia completa del repositorio. esto permite trabajo offline y operaciones rápidas.
Branching: cree ramas separadas para diferentes características o correcciones. esto mantiene código principal (main/master) siempre estable.
Merge y rebase: fusione ramas en la rama principal. merge preserva historial de commits. rebase crea historial lineal.
Comandos Básicos de Git
git init: crea un nuevo repositorio. git clone <url>: copia un repositorio existente.
git add <file>: agrega cambios al área de staging. git add .: agrega todos los cambios.
git commit -m "mensaje": confirma los cambios en staging. escriba mensajes de commit significativos.
git status: verifica el estado del repositorio. git log: visualiza el historial de commits.
git diff: ve las diferencias entre el directorio de trabajo y el área de staging. git diff --staged: ve las diferencias entre el área de staging y el último commit.
Branching y Merging
git branch <name>: crea una nueva rama. git checkout <name> o git switch <name>: cambia a la rama.
git merge <branch>: fusiona la rama en la rama actual. usa fast-forward merge o three-way merge.
Conflicto de merge: se requiere resolución manual para cambios conflictivos. edite los archivos conflictivos، márquelos con git add، complete con git commit.
git branch -d <name>: elimina la rama. git branch -D <name>: fuerza la eliminación de una rama no fusionada.
Operaciones de Repositorio Remoto
git remote add origin <url>: agrega repositorio remoto. git remote -v: lista los remotos.
git push origin <branch>: envía cambios locales al remoto. git push -u origin main: establece la rama upstream.
git pull: obtiene y fusiona cambios remotos. git fetch: obtiene cambios remotos (sin fusionar).
git push --force: actualiza forzadamente la rama remota (usar con cuidado). git push --force-with-lease: force push más seguro.
Estrategias de Branching
Git Flow: main (producción)، develop (desarrollo)، feature/* (nuevas características)، release/* (preparación de versión)، hotfix/* (correcciones urgentes).
GitHub Flow: rama main + ramas de características. cada rama de característica se fusiona a main mediante pull request. simple y efectivo.
Trunk-Based Development: una sola rama main، ramas de características de corta duración (1-2 días). combinado con integración continua (CI/CD).
Criterios de selección: Git Flow para proyectos grandes، GitHub Flow para proyectos pequeños-medianos، Trunk-Based Development para equipos con CI/CD maduro.
Mejores Prácticas
Mensajes de commit: use modo imperativo ('Add feature' no 'Added feature'). limite la primera línea a 50 caracteres، los detalles a 72 caracteres.
Commits atómicos: cada commit debe contener un solo cambio. divida los cambios grandes en commits pequeños.
Nomenclatura de ramas: use nombres descriptivos como feature/user-authentication، bugfix/login-error، hotfix/security-patch.
.gitignore: ignore archivos innecesarios (node_modules، .env، build/). use las plantillas de gitignore de GitHub.
Pull request: use pull requests para revisión de código. cada cambio debe ser revisado por al menos una persona.