Introducción a GIT
Loading...
Control de Versiones Distribuido
Sistema ideal para proyectos de software que requieren trabajo en equipo
Colaboración Flexible
Permite que múltiples desarrolladores trabajen simultáneamente sin interferencias
Historial de Cambios
Rastrea y gestiona cada modificación en el proyecto de manera eficiente
Control de Versiones Distribuido
1
Registro Histórico de Cambios
Git permite rastrear cada modificación en el código fuente, creando un historial completo de la evolución del proyecto.
2
Colaboración sin Conflictos
Con Git, varios desarrolladores pueden trabajar simultáneamente en el mismo proyecto sin generar conflictos de edición.
3
Integración Fluida
Los cambios se fusionan de manera organizada, manteniendo la integridad del código en todo momento.
Eficiencia y Cohesión
1
Organización con Ramas
Git facilita la organización del trabajo dividiendo el proyecto en ramas, cada una con un objetivo específico.
2
Desarrollo Paralelo
Los desarrolladores trabajan de forma independiente en sus ramas específicas, maximizando la productividad.
3
Flujo de Trabajo Eficiente
Finalmente, Git permite integrar todos los cambios de manera fluida y ordenada en el proyecto principal.
Algunos Datos.
100M
Repositorios
Más de 100 millones de repositorios en GitHub, la plataforma de alojamiento de código más popular.
87%
Usuarios
Más del 87% de los desarrolladores utilizan Git para la gestión de versiones, demostrando su popularidad y utilidad.
Ventajas de Git
El flujo de trabajo en Git es un proceso continuo que potencia el desarrollo colaborativo:

1

1
Experimentación Segura
Crea ramas para probar nuevas ideas

2

2
Colaboración Fluida
Trabajo simultáneo sin conflictos

3

3
Revisión y Mejora
Comunicación efectiva del equipo
Este ciclo continuo permite que los equipos innoven, colaboren y mejoren constantemente el código de forma segura y eficiente.
¿Qué es un control de versiones?
1
Historial de cambios
Git te permite ver cómo ha evolucionado el código con el tiempo, permitiendo que se realicen cambios sin riesgo de pérdida de información.
2
Comparación de modificaciones
Puedes comparar fácilmente las diferencias entre versiones del código, para identificar cambios específicos y comprender su impacto.
3
Restauración de archivos
Git facilita la restauración de archivos a versiones anteriores, en caso de errores, modificaciones no deseadas o pérdida de datos.
Beneficios clave
Control de historial
Git permite rastrear cada cambio en el código, creando un historial completo y facilitando la recuperación de versiones anteriores.
Colaboración eficiente
Git facilita la colaboración en proyectos, permitiendo a los desarrolladores trabajar en conjunto de manera eficiente y segura.
Seguridad garantizada
Git proporciona una capa de seguridad para proteger el código fuente, evitando la pérdida de información y facilitando la recuperación de versiones.
Tipos de sistemas de Control de versiones
VCS Local
Un sistema de control de versiones local almacena el historial de cambios en la computadora del usuario, sin un servidor central.
CVCS
Un sistema de control de versiones centralizado utiliza un servidor central que almacena todos los archivos y el historial de cambios, y los usuarios trabajan como clientes.
DVCS
Un sistema de control de versiones distribuido, como Git, permite que cada usuario tenga una copia completa del repositorio, con su propio historial local.
¿Por qué usar GIT?
Sistema distribuido
Git es un sistema distribuido, lo que significa que no depende de un único servidor central, lo que lo hace más resistente a fallos.
Trabajo Desconectado
Puedes trabajar en Git sin conexión a Internet, haciendo commits y viendo el historial de cambios, y luego sincronizar tus cambios con el servidor remoto.
Flujos de trabajo y colaboraciones
Git admite diferentes flujos de trabajo y permite que los equipos colaboren de forma eficiente, con diferentes ramas y estrategias de fusión.
Rápido y eficiente
Git es conocido por su velocidad y eficiencia, y es utilizado por proyectos de código abierto, empresas de tecnología, y una amplia gama de desarrolladores.
Git usa instantáneas, no diferencias.
1
Otros sistemas tradicionales
La mayoría de los sistemas de control de versiones almacenan los cambios como una serie de deltas, que son las diferencias entre las versiones de los archivos.
2
Sistema Git moderno
Git, en cambio, almacena una instantánea completa del estado del sistema de archivos en cada confirmación (commit), lo que permite recuperar versiones anteriores de forma más eficiente.
3
Beneficio principal
Esta estructura permite una recuperación más rápida y confiable de cualquier versión anterior del proyecto.
Snapshots vs Deltas
Snapshots
Git guarda una copia completa del estado del proyecto en cada confirmación (commit), lo que permite recuperar versiones anteriores de forma rápida y eficiente.
Deltas
Otros sistemas de control de versiones almacenan las diferencias entre las versiones de los archivos, lo que puede resultar en una mayor complejidad y un proceso de recuperación más lento.
¿Por qué GIT es tan rápido?
1
Operaciones locales
Git realiza la mayoría de sus operaciones de forma local, sin necesidad de comunicarse constantemente con un servidor remoto, lo que lo hace extremadamente rápido.
2
Historial accesible al instante
Con Git, puedes ver el historial del proyecto sin esperar respuestas de un servidor remoto, lo que lo hace muy eficiente.
3
Comparaciones locales
Git permite calcular las diferencias entre versiones de archivos de forma local, sin necesidad de descargarlas de un servidor remoto.
4
Trabajo sin conexión
Puedes seguir trabajando, haciendo commits y viendo el historial aunque no tengas conexión a Internet o VPN, lo que lo hace ideal para trabajar en diferentes lugares o con conexión intermitente.
Trabajo sin conexión
Trabajo Local
Git te permite trabajar en tu proyecto sin conexión a internet, haciendo commits y viendo el historial de cambios.
Sincronización
Solo necesitas conexión para hacer `git push` o `git pull` desde un repositorio remoto.
Respaldo Seguro
Es importante hacer `git push` regularmente para evitar pérdida de cambios en caso de perder el equipo.
Trabajo sin conexión
1
Trabajo Local
Puedes usar Git sin un repositorio remoto para realizar commits y gestionar versiones localmente.
2
Repositorio Remoto
Aunque no es obligatorio, usar un repositorio remoto es altamente recomendable cuando trabajas en equipo o necesitas respaldo.
3
Gestión de Cambios
Al hacer commits sin realizar `git push`, tus cambios solo se almacenan en tu máquina local.
4
Medidas de Seguridad
Si tu disco duro falla o pierdes el equipo, todo lo que no esté en un repositorio remoto se perderá. Por eso es crucial mantener respaldos remotos.
GIT y la integridad de datos
1
Huella digital
Git utiliza un hash SHA-1 para garantizar la integridad de los archivos, creando una huella digital única para cada archivo o directorio.
2
Detección de cambios
Si se modifica un archivo, el hash SHA-1 cambia, lo que permite a Git detectar cambios no autorizados o corrupción de archivos.
3
Seguridad de la información
Git protege la información contra la pérdida o la corrupción, ya que cualquier cambio no autorizado se puede detectar fácilmente.
SHA-1: La Huella Digital de Git
El sistema SHA-1 es fundamental para la integridad y seguridad de Git:
1
Generación del Hash
Git crea un identificador SHA-1 único de 40 caracteres para cada archivo y directorio
2
Verificación de Integridad
Cualquier cambio en el contenido modifica automáticamente el hash SHA-1
3
Almacenamiento Seguro
Git guarda los archivos por su hash SHA-1, no por nombre, garantizando su inmutabilidad
Este sistema de hashing garantiza que cada versión de un archivo sea única y verificable, proporcionando una capa fundamental de seguridad en Git.
Renombrar archivos
El proceso de renombrar archivos en Git puede realizarse de dos maneras:
1
1. Renombrar manualmente
Si renombras un archivo manualmente, Git no lo detecta automáticamente como un cambio de nombre y lo verá como un archivo eliminado y uno nuevo.
2
2. Usar comando git mv
Puedes usar `git mv` para renombrar archivos y actualizar su seguimiento en Git al mismo tiempo.
3
3. Resultado
El cambio se realiza en el sistema de archivos y se registra automáticamente en Git, manteniendo el historial del archivo.
Renombrar con Git
Comando `git mv`
El comando `git mv` mueve el archivo físicamente y actualiza su seguimiento en Git, realizando el cambio de nombre en el sistema de archivos y registrando el cambio en Git.
1
mv archivo.txt
Mover archivo físicamente
2
git rm archivo.txt
Eliminar archivo del seguimiento
3
git add nuevo.txt
Agregar nuevo archivo
Usando `git mv` realizamos estos tres pasos de forma integrada y eficiente en un solo comando.
Comandos básicos
1
git init
Inicializa un repositorio Git en la carpeta actual, creando un directorio oculto `.git` para almacenar toda la información del repositorio.
2
git config
Configura el nombre de usuario y el correo electrónico que se asociarán a los commits en este equipo, se puede configurar de forma global o local.
3
git status
Muestra información sobre los cambios en el repositorio, incluyendo archivos sin seguimiento, modificados o listos para ser confirmados.
4
git add
Agrega archivos al área de preparación (staging), preparándolos para ser confirmados en el repositorio. Se puede agregar un archivo o todos los archivos modificados y nuevos.
5
git commit
Guarda un snapshot del estado actual del repositorio con una descripción del cambio realizado. El mensaje debe ser claro y conciso, con un máximo de 50 caracteres.
6
git log
Muestra el historial de commits con detalles como el autor, fecha y mensaje, se puede utilizar la opción `--oneline` para ver un historial más compacto.
7
git clone
Descarga un proyecto desde un repositorio remoto, incluyendo el código y su historial de cambios, en una nueva carpeta.
8
git push
Envía los cambios de la rama `main` al repositorio remoto, se puede utilizar `git push --set-upstream origin main` para configurar la rama la primera vez.
9
git pull
Descarga y fusiona los cambios desde el repositorio remoto, se pueden resolver conflictos manualmente si se presentan.
Comandos básicos. Ramas
El proceso de enviar cambios al repositorio remoto sigue una secuencia específica:
1
Preparación Local
El comportamiento de `git push` depende de la configuración de Git y si ya se ha configurado un "remote tracking branch".
2
Especificar Destino
`origin` es el nombre del repositorio remoto por defecto cuando clonas un repositorio.
3
Seleccionar Rama
`main` es la rama a la que se quieren enviar los cambios, siendo explícito para evitar problemas con múltiples ramas remotas.
Usando el comando completo `git push origin main` aseguramos que los cambios se envían al destino correcto.
Comandos básicos. Ramas
Los comandos de ramas en Git nos permiten gestionar diferentes líneas de desarrollo en nuestro proyecto.
git branch
Muestra las ramas locales en el repositorio, permite ver las ramas disponibles para trabajar.
git branch –r
Muestra las ramas remotas del repositorio, permite ver las ramas disponibles para trabajar.
1
Crear rama
git branch nueva-rama
2
Cambiar rama
git checkout nueva-rama
3
Ver ramas
git branch --list
Clonar un Repositorio Existente
Para comenzar a trabajar con un proyecto Git existente, necesitamos obtener una copia local del repositorio remoto. El proceso de clonación nos permite descargar el proyecto completo, incluyendo todo su historial de cambios.
Ejecutar comando básico de clonación
git clone https://github.com/usuario/repositorio.git
Este comando descarga una copia completa del proyecto, incluyendo todos los archivos, ramas y el historial completo de cambios.
Git crea el directorio automáticamente
Por defecto, Git creará un directorio nuevo con el mismo nombre del repositorio. Por ejemplo, si el repositorio se llama "mi-proyecto", se creará un directorio llamado "mi-proyecto".
Personalizar el nombre del directorio (opcional)
git clone https://github.com/usuario/repositorio.git nombre-personalizado
En este caso, el repositorio se clonará en un directorio llamado "nombre-personalizado" en lugar del nombre original del repositorio. Una vez clonado, tendremos una copia local totalmente funcional del proyecto en nuestro equipo.
Crear un repositorio
GitHub es la plataforma más utilizada para alojar repositorios Git, permitiendo que los desarrolladores compartan código, colaboren y gestionen sus proyectos.
1
Acceder a GitHub
Visita https://github.com/new con tu cuenta de GitHub
2
Iniciar repositorio
Haz clic en el botón "New repository" en la interfaz de GitHub
3
Configurar detalles
Establece el nombre del repositorio y las opciones básicas
4
¡Listo para usar!
Tu nuevo repositorio está creado y listo para comenzar
Crear un repositorio
1
1. Nombre del proyecto
El nombre del repositorio es el nombre del proyecto, debe ser breve y descriptivo, por ejemplo, "hello-world" para un proyecto básico.
2
2. Descripción
La descripción del proyecto es una breve explicación de lo que hace el proyecto, se puede utilizar para proporcionar más información sobre el proyecto a los usuarios.
3
3. Público o privado
Se puede elegir si el repositorio es público, accesible a todos, o privado, solo accesible para el creador y los colaboradores.
Inicializar el repositorio
1
README.md
Es un archivo importante en el repositorio, se utiliza para proporcionar información básica sobre el proyecto, incluyendo la descripción, la instalación, el uso y la información de contacto.
2
Plantilla de README
Puedes usar una plantilla de README.md para comenzar, como la que se encuentra en https://gist.github.com/SINENSIA/3b4e6945c041f9d3548bfc1af373192a
3
Repositorio Listo
Con el README.md configurado, tu repositorio está preparado para compartir información clara sobre tu proyecto.
Inicializar el repositorio
1
Título y Descripción
Comienza con un título claro y conciso que describa tu proyecto. Proporciona una breve descripción que explique de qué se trata el proyecto y su propósito.
2
Instalación
Detalla los pasos necesarios para instalar y configurar el proyecto, como dependencias, comandos de instalación y configuración del entorno.
3
Uso
Explica cómo utilizar el proyecto. Proporciona ejemplos de código y guías paso a paso para mostrar a los usuarios cómo pueden aprovecharlo.
Inicializar el repositorio
1
Contribución
Explica qué pautas seguir para contribuir de manera efectiva al repositorio para otros desarrolladores que quieran colaborar. Enlaces a una Wiki o tutoriales.
2
Licencia y créditos
Especifica la licencia bajo la cual se distribuye el proyecto. También puedes incluir una sección con agradecimientos y créditos a los colaboradores.
3
Estado del Proyecto
Indica el estado actual del proyecto. Si está en desarrollo o es una versión estable o quizá solo un prototipo.
4
Contacto
Para que los usuarios puedan comunicarse con el autor o coordinador en caso de preguntas o problemas.
Inicializar el repositorio
1
Crear Encabezados
Para crear un índice con links a cada una de las secciones, usa esta sintaxis:
`[Enlace al Título](#título-del-proyecto)`
2
Formatear Enlaces
Los enlaces deben usar `kebab case` para el nombre de la sección:
`[Enlace a la Descripción](#descripción)`
3
Vincular Documentos
También puedes enlazar a otros archivos:
`[Guía de contribución](docs/CONTRIBUTING.md)`
Inicializar el repositorio
Negrita
Usamos `**` antes y después del texto que se desea poner en negrita, por ejemplo, `**Barco**`
Cursiva
Usamos `_` antes y después del texto que se desea poner en cursiva, por ejemplo, `_Clase para manejar barcos_`
Código
Usamos `\`\`\` antes y después del código, e indicamos el lenguaje, por ejemplo, `\`\`\`java`
Inicializar el repositorio
Listas
Usamos `-` antes de cada elemento de la lista, por ejemplo, `- Version 0.1 (2023-04-19) - lanzamiento inicial`
Bloques
Indentamos 4 espacios para crear bloques de texto, por ejemplo, ` 1. Fork it!`
Comandos
Usamos `\` antes y después de los comandos, por ejemplo, `\`git checkout -b my-new-feature\``
Inicializar el repositorio
Archivo .gitignore
Un archivo importante que siempre debes incluir y configurar en tus repositorios, controla qué archivos o directorios deben ser ignorados por Git.
Comentarios
Puedes agregar comentarios en el archivo .gitignore usando el símbolo `#`, los comentarios son útiles para documentar las reglas.
Inicializar el repositorio
1
1. Estructura del Proyecto
Los patrones en un archivo .gitignore son rutas relativas a la ubicación del archivo .gitignore.
2
2. Ubicación del .gitignore
proyecto/ ├── .gitignore ├── carpeta/ │ └── archivo.exe ├── otro_archivo.txt └── archivo.exe
3
3. Uso de Patrones Relativos
En el archivo .gitignore ubicado en la carpeta "proyecto", puedes usar un patrón relativo como `carpeta/archivo.exe` para ignorar solo ese archivo en particular.
Inicializar el repositorio
1
Patrones Comodín
Si usas un patrón como `*.exe`, se aplicará a todos los archivos con extensión ".exe" en el directorio actual y sus subdirectorios.
2
Directorios
Si deseas ignorar un directorio completo y su contenido, puedes usar un patrón como `nombre_de_directorio/`, por ejemplo, `carpeta/` ignorará todo el contenido de la carpeta "carpeta" y todos sus subdirectorios.
Inicializar el repositorio
1
Regla general
Primero se establece una regla general como `*.log` para ignorar todos los archivos log
2
Excepción
Se añade el patrón negativo `!importante.log` para hacer la excepción
3
Resultado
Git ignorará todos los archivos .log excepto 'importante.log'
Si deseas hacer una excepción a una regla de ignorar, puedes usar un patrón negativo, por ejemplo, `!importante.log` después de la regla `*.log`.
Clonar el repositorio
Localizar el repositorio
Navega hasta el repositorio deseado en GitHub que deseas clonar.
Copiar la dirección
Haz clic en el botón verde "Code" y copia la URL del repositorio HTTPS o SSH.
Ejecutar el comando clone
Abre la terminal, navega a la carpeta destino y ejecuta "git clone" seguido de la URL copiada.
Verificar la clonación
Comprueba que el repositorio se ha clonado correctamente explorando la nueva carpeta creada.
Clonar el repositorio
1
Instalación de Git
Asegúrate de tener Git instalado en tu sistema antes de clonar el repositorio, puedes descargar e instalar Git desde la página web oficial.
2
Comando `git clone`
Usa el comando `git clone` seguido de la dirección del repositorio para clonar el proyecto en tu computadora local.
Clonar el repositorio
1
Abrir IDE
Inicia tu entorno de desarrollo integrado preferido
2
Cargar proyecto
Selecciona la carpeta del repositorio clonado
3
Comenzar desarrollo
Empieza a trabajar con el código del proyecto
Una vez que el repositorio esté clonado en tu computadora, puedes seguir estos pasos para comenzar a desarrollar.
Clonar el repositorio
Integración con IDE
Visual Studio Code
Control de versiones integrado y extensiones oficiales de Git
Eclipse
Perspectiva Git incorporada y herramientas de control de versiones
IntelliJ IDEA
Potentes herramientas de Git nativas y plugins adicionales
Cada IDE moderno ofrece herramientas, extensiones o plugins específicos para facilitar la integración con Git, mejorando tu flujo de trabajo.
Clonar el repositorio
Localizar carpeta
Navega hasta la ubicación donde deseas clonar el repositorio
Abrir IDE
Inicia tu entorno de desarrollo integrado favorito
Importar proyecto
Selecciona la carpeta del proyecto clonado en tu IDE
¡Listo para comenzar!
El proyecto está configurado y listo para trabajar
Flujo de trabajo básico
1
Inicializar
Crea un nuevo repositorio con `git init`.
2
Agregar
Agrega archivos al área de preparación con `git add`.
3
Confirmar
Confirma los cambios con `git commit`.
4
Subir
Sube los cambios al repositorio remoto con `git push`.
5
Descargar
Descarga los últimos cambios desde el repositorio remoto con `git pull`.
Ramas en Git
1
Creación de ramas
Crea una nueva rama con `git checkout -b nombre_de_la_rama`.
2
Cambiar de rama
Cambia a una rama existente con `git checkout nombre_de_la_rama`.
3
Fusionar ramas
Fusiona una rama con otra con `git merge nombre_de_la_rama`.
Ramas en Git
1
Ramas principales
Las ramas principales son las que contienen el código base del proyecto.
2
Ramas de desarrollo
Las ramas de desarrollo se utilizan para desarrollar nuevas características, corregir errores o probar ideas.
3
Ramas de características
Las ramas de características se utilizan para desarrollar una característica específica del proyecto.
El flujo de trabajo en Git permite una progresión natural desde las ramas de características hacia las ramas de desarrollo, y finalmente hacia la rama principal.
Ramas en Git
El flujo de trabajo con ramas en Git es un proceso cíclico que permite el desarrollo colaborativo eficiente.

1

1
Flujo de trabajo de ramas
Las ramas son herramientas esenciales para el trabajo en equipo, permiten a los desarrolladores trabajar de forma independiente y luego integrar sus cambios.

2

2
Ramas para pruebas
Las ramas de desarrollo pueden usarse para probar nuevas ideas o funciones sin afectar la rama principal.

3

3
Integración de cambios
Las ramas se fusionan con la rama principal para integrar los cambios en el proyecto principal.
Este ciclo continuo permite un desarrollo ágil y seguro, manteniendo la integridad del código base mientras se desarrollan nuevas características.
Manejo de conflictos
El proceso de manejar conflictos en Git sigue un ciclo predecible:

1

1
1. Detección de conflictos
Los conflictos surgen cuando dos ramas realizan cambios en el mismo archivo. Git no puede fusionar automáticamente los cambios.

2

2
2. Análisis y resolución
Se puede resolver un conflicto manualmente editando el archivo y seleccionando los cambios que se desean mantener.

3

3
3. Uso de herramientas
Git proporciona una herramienta gráfica para ayudar a resolver conflictos, el comando `git mergetool` inicia la herramienta de fusión integrada.
Este ciclo se repite cada vez que surgen nuevos conflictos durante el desarrollo colaborativo.
Comandos para manejo de conflictos
1
Comando `git diff`
Muestra las diferencias entre dos versiones de un archivo o entre dos ramas.
2
Comando `git log`
Muestra el historial de commits, puede ser útil para ver los cambios que se han realizado en un archivo o rama.
3
Comando `git checkout`
Permite cambiar de rama, puede ser útil para volver a una rama anterior y comparar los cambios.
Proceso de resolución
Estos comandos trabajan en conjunto para ayudarte a resolver conflictos de manera efectiva.
Flujo de trabajo
Sigue esta secuencia para gestionar conflictos en tu repositorio.
Herramientas de Git
1
GitHub
La plataforma más popular para alojar repositorios Git, permite a los desarrolladores colaborar y gestionar sus proyectos.
2
GitLab
Una plataforma alternativa a GitHub, ofrece una amplia gama de funciones para la gestión de proyectos, incluyendo CI/CD, integración con herramientas de desarrollo y seguridad.
3
Bitbucket
Otra alternativa a GitHub, se integra bien con herramientas de desarrollo de Atlassian, como Jira y Bamboo.
4
GitKraken
Un cliente de Git con una interfaz gráfica atractiva y fácil de usar, ofrece funciones avanzadas para la gestión de ramas, conflictos y flujos de trabajo.
5
Sourcetree
Un cliente de Git gratuito para Windows y macOS, ofrece una interfaz gráfica intuitiva y funciones para la gestión de repositorios, ramas y conflictos.
Conclusión
Dominio de Git
Git es una herramienta esencial para los desarrolladores de software y cualquier persona que trabaje con archivos digitales.
Colaboración efectiva
Con Git, puedes gestionar proyectos, trabajar en equipo y colaborar de forma eficiente y segura.
Desarrollo continuo
Mantente al día con las últimas funciones de Git y las mejores prácticas para optimizar tus flujos de trabajo.