Publicado: 2024-04-18 12:35:00 / Desarrollo web y programación / JIVSoft
GitHub
En este artículo se definen los términos clave, se ofrece información general de Git y los repositorios de GitHub
![GitHub](https://s3.amazonaws.com/jivsoft.admin.production/modules/merchants/3/posts/28_rubaitulazadHLQDfaJUTVIunsplash.jpg)
Todos los desarrolladores necesitan utilizar algún tipo de sistema de control de versiones (VCS), una herramienta que les permita colaborar con otros desarrolladores en un proyecto sin peligro de que sobrescriban el trabajo de los demás, y volver a las versiones anteriores de la base de código si existe un problema descubierto más tarde. El más popular (al menos entre los desarrolladores web) es Git, junto con GitHub, un sitio que proporciona alojamiento para tus repositorios y varias herramientas para trabajar con ellos. Este módulo tiene como objetivo enseñarte lo que necesitas saber sobre ambos.
¿Qué es Git?
Según Microsoft se trata de un sistema de control de versiones distribuido muy utilizado en el desarrollo de software. Fue creado por Linus Torvalds y es conocido por su eficiencia, flexibilidad y capacidad para gestionar proyectos de cualquier tamaño. Git le permite a los desarrolladores realizar un seguimiento de los cambios en el código fuente a lo largo del tiempo, facilitando la colaboración entre equipos al proporcionar un historial detallado de modificaciones. Además, su enfoque distribuido le permite a cada desarrollador trabajar localmente con su propio repositorio completo, lo que agiliza el proceso y facilita la fusión de cambios.
Al tratarse de un sistema de control de versiones distribuido los miembros del equipo tienen una copia local (clon) del proyecto en su dispositivo, de esta forma, tienen un repositorio de control de versiones completo. Los repositorios locales permiten trabajar sin conexión o de forma remota fácilmente. Solo hay que confirmar el trabajo localmente y después sincronizar la copia del repositorio con la copia del servidor. En el caso de los sistemas de control de versiones centralizados, hay que sincronizar el código con un servidor antes de crear nuevas versiones.
Cada vez que modificamos nuestro proyecto y lo guardamos, Git crea una confirmación. Una confirmación es una instantánea de todos los archivos en un momento concreto. Si un archivo no ha cambiado de una confirmación a la siguiente, Git usa el archivo anterior.
Sin embargo, hay algunos inconvenientes para manejar el desarrollo de esta manera. Como el software local está instalado en su máquina individual, git no puede leer las ediciones que otros desarrolladores puedan estar haciendo en tiempo real. Esto significa que si usted y un compañero de equipo están trabajando en un proyecto simultáneamente, no podrán ver el trabajo del otro.
¿Qué es GitHub?
GitHub facilita la colaboración con git. Es una plataforma que puede mantener repositorios de código en almacenamiento basado en la nube para que varios desarrolladores puedan trabajar en un solo proyecto y ver las ediciones de cada uno en tiempo real.
Además, también incluye funciones de organización y gestión de proyectos. Puede asignar tareas a individuos o grupos, establecer permisos y roles para los colaboradores y usar la moderación de comentarios para mantener a todos en la tarea.
Además, los repositorios de GitHub están disponibles públicamente. Los desarrolladores de todo el mundo pueden interactuar y contribuir al código de los demás para modificarlo o mejorarlo, lo que se conoce como «codificación social». En cierto modo, esto hace que GitHub sea un sitio de redes para profesionales de la web.
Hay tres acciones principales que puede realizar cuando se trata de interactuar con el código de otros desarrolladores en GitHub:
- Bifurcación: El proceso de copiar el código de otra persona del repositorio para modificarlo.
- Pull: Cuando haya terminado de hacer cambios en el código de otra persona, puede compartirlos con el propietario original a través de una «solicitud pull».
- Fusión: Los propietarios pueden añadir nuevos cambios a sus proyectos a través de una fusión, y dar crédito a los contribuyentes que los han sugerido.
Diferencias entre Git y GitHub
- Git es un software de VCS local que permite a los desarrolladores guardar instantáneas de sus proyectos a lo largo del tiempo.
- GitHub es una plataforma basada en la web que incorpora las características de control de versiones de git para que puedan ser utilizadas de forma colaborativa. También incluye características de gestión de proyectos y equipos, así como oportunidades para la creación de redes y la codificación social.
La diferencia principal entre Git y GitHub es que Git es una herramienta de código abierto que los desarrolladores instalan localmente para gestionar el código fuente, mientras que GitHub es un servicio en línea al que los desarrolladores que utilizan Git pueden conectarse y cargar o descargar recursos.
En resumen, Git es el sistema de control de versiones y GitHub es un servicio de alojamiento para los repositorios de Git.
Ventajas de GitHub
Cuando comienzas a profundizar en la matería sobre qué es GitHub y el uso que se le da, hay que destacar que aporta una serie de ventajas que enumeramos a continuación:
- Acceso a tus repositorios siempre desde cualquier equipo, pues se encuentran almacenados en la nube.
- Con su interfaz es posible tener acceso rápido a los repositorios que tengas.
- Integrado con Git.
- Hace más fácil el manejo y la integración de las modificaciones que realiza cada programador.
- Es gratis.
- Tienes el gran apoyo de la comunidad que usa esta clase de herramienta a diario, por lo que las dudas que se puedan tener son resueltas con suma rapidez.
Acerca del control de versiones
Un sistema de control de versiones o VCS (Version Control System, por sus siglas en inglés), rastrea el historial de cambios conforme las personas y los equipos colaboran juntos en los proyectos. Conforme los desarrolladores hacen cambios al proyecto, cualquier versión anterior de este puede recuperarse en cualquier momento.
Los desarrolladores pueden revisar el historial de proyectos para averiguar:
- ¿Qué cambios se hicieron?
- ¿Quién los hizo?
- ¿Cuándo se hicieron?
- ¿Por qué se necesitaban?
Los VCS le proporcionan a cada contribuyente una vista consistente y unificada de un proyecto, lo cual muestra el trabajo que ya está en progreso. El ver un historial de cambios transparente, quién los hizo y cómo contribuyen al desarrollo de un proyecto, ayuda a que los miembros de los equipos se alineen mientras trabajan independientemente.
Git es el sistema de control de versiones distribuido más popular. Git se utiliza habitualmente tanto para el desarrollo de proyectos de código abierto como comerciales y tiene beneficios significativos para los individuos, equipos y negocios.
-
Git permite que los desarrolladores vean la línea de tiempo completa para los cambios, decisiones y progresión de cualquier proyecto en un solo lugar. Desde el momento en el que acceden al historial de un proyecto, el desarrollador tiene todo el contexto que necesitan para entenderlo y comenzar a contribuir.
-
Los desarrolladores trabajan en todos los husos horarios. Con un DVCS como Git, las colaboraciones pueden tomar lugar en cualquier momento, mientras se mantiene la integridad del código fuente. Al utilizar las ramas, los desarrolladores pueden proponer cambios al código de producción de forma segura.
-
Los negocios que utilizan Git pueden derribar las barreras de comunicación entre los equipos y mantenerlos enfocados en que realicen su mejor trabajo. Además, Git permite alinear a expertos a lo largo de los negocios para que colaboren en los proyectos principales.
Acerca de los repositorios
Un repositorio o proyecto comprende toda la colección de archivos y carpetas asociados con un proyecto, en conjunto con el historial de revisión de cada archivo. El historial del archivo se muestra como capturas de pantalla en el tiempo, las cuales se denominan "confirmaciones". Estas confirmaciones pueden organizarse en varias líneas de desarrollo, llamadas "ramas". Ya que Git es un DVCS, los repositorios son unidades auto-contenidas y cualquiera que tenga una copia del repositorio puede acceder a toda la base de código y a su historial. Utilizando la línea de comandos o cualquier otra interfaz de facilidad de uso, un repositorio de Git también permite: interactuar con el historial, clonar el repositorio, crear ramas, confirmar, fusionar y comparar cambios entre las versiones del código y más.
Branch o ramificaciones
Si se quiere trabajar con una parte en concreto del proyecto de manera aislada y sin que afecte al repositorio principal, es necesario hacerlo utilizando las Branches.
En este sentido, un Branch lo que hace es una copia exacta del proyecto para realizar pruebas sin miedo a equivocarse y sin que estas puedan afectar a la totalidad del trabajo que se realice.
Pull Request
Conforme vayas subiendo nuevos cambios en una rama del proyecto, debes avisar a otros colaboradores de tal forma que puedan validar o no tu pull request.
En un equipo, generalmente son los tech leads los encargados de revisar las pull requests del resto de miembros, de tal forma que tienen que tratar de encontrar posibles fallos o proponer mejoras.
Tags o etiquetas
Con los Tag se puede establecer el control de un estado del repositorio proporcionando información para los demás usuarios sobre la versión en la que está actualmente el proyecto en cuestión.
A dicha acción se la llama 'Tagging' y es de gran importancia cuando se trata de la gestión de la vida de un proyecto.