Conceptos clave
Git es un sistema de control de versiones distribuido que permite gestionar y rastrear cambios en el código fuente de proyectos de software. Aquí te explico algunos de los conceptos clave de Git:
1. Repositorio (Repository)
- Descripción: Un repositorio es un lugar donde se almacena el historial completo de un proyecto. Puede ser local en tu máquina o remoto en un servidor (por ejemplo, GitHub, GitLab).
- Ejemplo: Cuando clonas un proyecto de GitHub, estás creando una copia local de su repositorio.
2. Commit
- Descripción: Un commit es una instantánea del proyecto en un punto específico en el tiempo. Cada commit incluye un mensaje descriptivo y un hash único.
- Ejemplo:
git commit -m "Añadido nuevo módulo de autenticación"
3. Branch (Rama)
- Descripción: Una rama es una línea independiente de desarrollo. Permite trabajar en diferentes características o correcciones simultáneamente sin interferir con la rama principal.
- Ejemplo:
git branch nueva-caracteristicacrea una nueva rama llamadanueva-caracteristica.
4. Merge
- Descripción: El comando
mergese utiliza para combinar los cambios de diferentes ramas en una sola. Generalmente se hace para incorporar características desarrolladas en una rama secundaria a la rama principal. - Ejemplo:
git merge nueva-caracteristicafusiona la ramanueva-caracteristicaen la rama actual.
5. Rebase
- Descripción: El comando
rebaseaplica los commits de una rama sobre otra rama base. Se usa para mantener un historial lineal y limpio. - Ejemplo:
git rebase masteraplica los cambios de la rama actual sobre la última versión demaster.
6. Clone
- Descripción: El comando
clonecrea una copia completa de un repositorio remoto en tu máquina local. - Ejemplo:
git clone https://github.com/usuario/repositorio.gitclona el repositorio desde GitHub a tu máquina local.
7. Pull
- Descripción: El comando
pulldescarga y fusiona los cambios del repositorio remoto en tu rama actual. - Ejemplo:
git pull origin masterdescarga los cambios desde la ramamasterdel repositorio remotooriginy los fusiona con tu rama actual.
8. Push
- Descripción: El comando
pushsube los commits de tu rama local al repositorio remoto. - Ejemplo:
git push origin masterenvía los cambios de tu rama localmasteral repositorio remotoorigin.
9. Staging Area (Área de Preparación)
- Descripción: El área de preparación es una etapa intermedia donde seleccionas los cambios que deseas incluir en tu próximo commit. Los archivos deben ser añadidos al área de preparación antes de hacer un commit.
- Ejemplo:
git add archivo.txtagregaarchivo.txtal área de preparación.
10. Checkout
- Descripción: El comando
checkoutse utiliza para cambiar de rama o restaurar archivos en tu área de trabajo. - Ejemplo:
git checkout nueva-caracteristicacambia a la ramanueva-caracteristica.
11. Status
- Descripción: El comando
statusmuestra el estado actual del repositorio, incluyendo cambios no preparados y ramas activas. - Ejemplo:
git statusmuestra los archivos modificados y su estado.
12. Log
- Descripción: El comando
logmuestra el historial de commits en la rama actual, incluyendo mensajes, autores y hashes. - Ejemplo:
git logmuestra el historial de commits recientes.
13. Diff
- Descripción: El comando
diffmuestra las diferencias entre archivos o commits, ayudándote a ver qué cambios se han realizado. - Ejemplo:
git diffmuestra las diferencias entre los cambios no preparados y el último commit.
14. Tag
- Descripción: Un tag es una referencia a un commit específico, que generalmente se usa para marcar versiones o puntos importantes en el historial del proyecto.
- Ejemplo:
git tag v1.0crea una etiqueta llamadav1.0en el commit actual.
15. Reset
- Descripción: El comando
resetse usa para deshacer cambios en el área de preparación y/o en el historial de commits. Puede modificar el estado de los archivos en tu directorio de trabajo. - Ejemplo:
git reset --hard HEAD~1deshace el último commit y restablece el estado del directorio de trabajo al estado anterior.
16. Revert
- Descripción: El comando
revertcrea un nuevo commit que deshace los cambios introducidos por un commit anterior, sin alterar el historial del repositorio. - Ejemplo:
git revert 1234abcddeshace los cambios del commit con el hash1234abcdy crea un nuevo commit con esos deshaceres.
Ejemplos Prácticos
- Crear un nuevo repositorio y hacer el primer commit:
mkdir mi_proyecto cd mi_proyecto git init echo "Hola Mundo" > archivo.txt git add archivo.txt git commit -m "Primer commit" - Trabajar en una nueva rama:
git checkout -b nueva-rama echo "Cambio en la nueva rama" > nuevo_archivo.txt git add nuevo_archivo.txt git commit -m "Añadido nuevo archivo en nueva-rama" - Fusionar cambios de una rama en otra:
git checkout master git merge nueva-rama - Sincronizar cambios con el repositorio remoto:
git push origin master - Deshacer cambios no confirmados:
git checkout -- archivo_modificado.txt
Estos conceptos y comandos te ayudarán a comprender y manejar Git de manera efectiva para gestionar el código fuente y colaborar en proyectos de desarrollo.