¿Qué es Github?

GitHub es una plataforma de desarrollo colaborativo que utiliza Git como sistema de control de versiones. Se utiliza principalmente para alojar proyectos de software, pero también puede utilizarse para almacenar y compartir documentos. GitHub ofrece una amplia gama de herramientas para colaboración y revisión del código, gestión de proyectos y documentación. También es una plataforma popular para compartir código abierto y colaborar en proyectos de código abierto.

¿Qué es Git? #

Git es un SCV distribuido, diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente. Git está optimizado para guardar todos estos cambios de forma atómica e incremental.

Se obtiene su mayor eficiencia con archivos de texto plano, ya que con archivos binarios no puede guardar solo los cambios, sino que debe volver a grabar el archivo completo ante cada modificación, por mínima que sea, lo que hace que incremente demasiado el tamaño del repositorio.

Las tres secciones principales de un proyecto de Git #

  • El directorio de Git (Git Directory, Repository)
  • El directorio de trabajo (Working Directory)
  • El área de preparación (Staging Area)

¿Qué es un Branch y cómo funciona un Merge en Git? #

Todos los commits se aplican sobre una rama. Por convención se empieza a trabajar en la rama master (puede cambiarse el nombre de ser necesario) y se crean nuevas a partir de esta, para crear flujos de trabajo independientes.

Crear una nueva rama implica copiar un commit (de cualquier rama), pasarlo a otro lado (a otra rama) y continuar el trabajo de una parte específica de nuestro proyecto sin afectar el flujo de trabajo principal (que continúa en la rama master).

GitHub – Repositorios remotos #

Por seguridad y practicidad, para trabajar con repositorios remotos lo ideal es no enviar las credenciales de loging cada vez que se transfiera información con la plataforma, para eso se configuran las llaves SSH, siendo el método más seguro.

Conexión a GitHub con SSH #

Luego de crear las llaves SSH se debe entregar la llave pública a GitHub para realizar la comunicación de forma segura y sin necesidad de escribir el usuario y contraseña.
Para esto entrar a la Configuración de Llaves SSH en GitHub, crear una nueva llave con el nombre deseado y el contenido de la llave pública de tu computadora.

Tags y versiones en Git y GitHub #

Los tags o etiquetas permiten asignar versiones a los commits con cambios más importantes o significativos del proyecto.

En GitHub esto crea releases, versiones descargables del proyecto en ese preciso estado.

Flujo de trabajo profesional con Pull requests #

En un entorno profesional normalmente se bloquea la rama master, se desarrolla en para enviar código a dicha rama pasa por un code review y luego de su aprobación se unen códigos.

Para realizar pruebas enviamos el código a un “staging server” (servidor de prueba), una vez pasadas las pruebas tanto del código como de la aplicación, se pasan al servidor de producción mediante un pull request (GitHub y Bitbucket) o merge request (GitLab).

¿En qué se diferencia de Git de Github? #

Github es una plataforma de desarrollo colaborativo para alojar proyectos utilizando el sistema de control de versiones Git. Se emplea principalmente para la creación de código fuente de programas de computadora.

Puede considerarse a Github como la red social de código para los programadores y en muchos casos es visto como un curriculum vitae, pues aquí se guarda el portafolio de proyectos de programación.

Características de Github #

  • GitHub permite alojar proyectos en repositorios de forma gratuita y pública, pero tiene una forma de pago para privados.
  • Puedes compartir fácilmente tus proyectos.
  • Permite colaborar para mejorar los proyectos de otros y a otros mejorar o aportar a los tuyos.
  • Ayuda a reducir significativamente los errores humanos, a tener un mejor mantenimiento de distintos entornos y a detectar fallos de una forma más rápida y eficiente.
  • Es la opción perfecta para poder trabajar en equipo en un mismo proyecto.
  • Ofrece todas las ventajas del sistema de control de versiones Git, pero también tiene otras herramientas que ayudan a tener un mejor control de los proyectos.