Hace unos días estaba leyendo en Forbes un artículo titulado  “GitHub and the Democratization of Programming” entrevista realizada a Chris Wanstrath co-fundador y CEO de GitHub, me gustó mucho la siguiente frase, y me parece importante escribir este artículo/tutorial a la vez:

En español: Al igual que un portafolio o un curriculum vitae, GitHub funciona para evaluar mejor a los candidatos. Una vez que haya alguien interesado, o una vez que has encontrado a alguien que le gustaría contratar, echa un vistazo a su perfil en GitHub. Mira lo que ha estado haciendo. Descubre a quién siguen y en lo que está interesado.

Original: Like a portfolio or resume, GitHub works best for evaluating candidates. Once you have someone interested, or once you’ve found someone you’d like to hire, check out their GitHub profile. See what they’ve been doing. See who they follow and what they’re interested in.

Algunos ejemplos de esta afirmación: el siguiente enlace; sección de empleos en Heroku.com requieren un Desarrollador de Infraestructura de Datos para el motor PostgreSQLy como observación; incluir en el curriculum vitae su usuario en Github. Otro, la empresa Priorknowledgesolicita un Desarrollador para API’s para Backend  y entre los requisitos, enviar el usuario GitHub, en tastedmenu el desarrollador principal, en Rally un desarrollador de Ruby on Rails  y otras tantas ofertas de empleo en diferentes empresas.

GitHub es un proyecto en constate crecimiento desarrollado por geeks con visión emprendedora y de compartir conocimiento, pero todo en base a GitGitHub está escrito en Ruby on Rails, pero en verdad va mucho más allá, pues es una plataforma que interactúa directamente con el Sistema Operativo donde está desplegado, el sistema de control de versiones Git y otros “Hacks” que lo hacen una herramienta muy geek pero fácil de manejar. Por cierto es necesario mencionar la fama que le dio a Gitantes de GitHub eran muy pocos los proyectos aun que grandes que lo implementaban.

Cosas curiosas en GitHub

Git y Github desde la Trinchera

¿Pero qué es Git?

Git es un Sistema de Control de Versiones (VCS) distribuido libre y de Código Abierto escrito en lenguaje C, ¿Qué quiere decir esto?, Que si tu y un grupo de amigos trabajan en un proyecto de desarrollo en cualquier lenguaje(s) del lado del cliente (Frontend) o del servidor (Backend), incluso de ambos tipos, pueden interactuar con el código del proyecto, ¡todos!, sin la necesidad de tener explícita y obligatoriamente un servidor, puede ser el laptop de un miembro del equipo, o el desktop con un procesador Pentium IV que tiene guardado sin usar. Pero! Si es recomendable así sea un sistema distribuido; tener un repositorio central (Para esto usaremos GitHub).

¿Libre y de Código Abierto?, Si!, Otro de los dictadores benevolentesLinus Torvalds principal interesado y desarrollador de Git, al ver la necesidad pues la herramienta de SCV, BitKeeper, que usaban para el Kernel de  Linux dejo de ser gratuita, y lógicamente esto ya no tenía sentido para la filosofía del Software Libre, además si las licencias fueran por usuario quién pagaría este costo, el  Kernel de  Linux cuenta con más de 7.800 desarrolladores.

Vocabulario en Git

Es necesario tener un vocabulario o una jerga básica referente a Git, una lista con algunos conceptos, que difícilmente pueden tener el mismo significado en español por esto procuro conservar la palabra original:

Termino Definición
Repositorio ó Repository Un repositorio contiene la historia, las diferentes versiones en el tiempo y todas las diferentes ramas (branches) y etiquetas (Tags). Cada copia del repositorio en Git es un repositorio completo.
Ramas ó Branches Una rama o branch es una línea de código por separado con su propia historia. Puede crear una nueva rama de una existente y cambiar el código de forma independiente de otras ramas. Una de las ramas es el valor por defecto (normalmente llamado master ó maestro).
Etiquetas ó Tags Una etiqueta ó Tag apunta específicamente a cierto espacio en el tiempo en una rama ó branch específico. Con un tag, puede tener un punto de referencia al que siempre puede revertir, por ejemplo, el código del 15.05.2012, en el branch “test” o el código de la versión 1.5 en el brach “master”.
Commit Difícilmente en español se pueda traducir esta palabra, pero es como confirmar cambios. Esto crea una nueva revisión, que puede ser recuperada más tarde, por ejemplo, si usted quiere ver o recuperar el código fuente de una versión anterior. Cada commit contiene el autor y el committer o quien realiza los cambios, por lo que es posible identificar la fuente del cambio. El autor y el committer podrían ser personas diferentes. Esto lo veremos más adelante.
Revisión Representa una versión del código fuente. Git identifica las revisiones con los identificadores de SHA1. Los SHA1 son los identificadores de 160 bits de longitud y están representados en hexadecimal. La última versión se puede abordar a través de “HEAD”, la versión antes de que a través de “HEAD ~ 1” y así sucesivamente.

Instalación de Git

Ya no existe excusa para instalar Git en los equipos y servidores pues el estado del arte de Git es Disponible para casi todos los Sistemas Operativos principales. Me atrevo a decir que la manera más difícil es Linux pero aun así es fácil. Entonces Anímate!

En Linux

Es más fácil de instalar Git en Linux usando el gestor de paquetes preferido de su distribución de Linux:

Debian/Ubuntu

$ apt-get install git-core

Fedora

$ yum install git

Gentoo

$ emerge –ask –verbose dev-vcs/git

FreeBSD

$ cd /usr/ports/devel/git
$ make install

Solaris 11 Express

$ pkg install developer/versioning/git

OpenBSD

$ pkg_add git

En Windows

Simplemente es descargar e instalar la versión más actualizada en el siguiente enlace GitHub en Windows La verdad es muy sencillo de instalar, es extraño encontrar inconvenientes o problemas.

En Mac OS

Es muy parecido a Windows y lo descargas del siguiente enlace GitHub en Mac de pronto en lo que puede presentar problemas es si la versión del Mac OS es muy vieja.

Otra opción en Mac es usar MacPorts y lo instalamos con el siguiente comando

sudo port install git-core +svn +doc +bash_completion +gitweb

¿Y Cómo funciona Git?

Al Principio puede parecer confuso el concepto del “workflow”  de Git, pero después lo amaras más que a tu editor de Código (No exagero es cierto!). Git tiene tres estados principales en los que se pueden encontrar tus archivos: confirmado (committed), modificado (modified), y preparado (staged).

  • Confirmado significa que los datos están almacenados de manera segura en tu base de datos local, no se asuste que no tiene nada que ver con motores de bases de datos como MySQL, PostgreSQL o Oracle, simplemente son una serie de archivos locales ocultos.
  • Modificado significa que has modificado el archivo pero todavía no lo has confirmado a tu base de datos, de nuevo le recuerdo que no tiene nada que ver con motores de bases de datos.
  • Preparado significa que has marcado un archivo modificado en su versión actual para que vaya en tu próxima confirmación.
La principal diferencia entre Git y cualquier otro sistema de control de versiones (Subversión, entre otros…), es que la mayoría almacenan la información como una lista de cambios en los archivos, esto con el tiempo se puede convertir en algo lento si el desarrollo es muy grande y hay muchos desarrolladores. Git no modela ni almacena tus datos de este modo. Lo hace más como un conjunto de instantáneas de un mini sistema de archivos. Cada vez que confirmas un cambio, o guardas el estado de tu proyecto en Git, él básicamente hace una foto del aspecto de todos tus archivos en ese momento, y guarda una referencia a esa instantánea. En la siguiente grafica puede ver el comportamiento de Git:
  • El directorio de Git es donde se almacena los metadatos y la base de datos de objetos para tu proyecto. Es la parte más importante de Git, y es lo que se copia cuando clonas un repositorio desde otro ordenador, puede ser desde el servidor, de esto hablaremos en el siguiente o posterior Post.
  • El directorio de trabajo es una copia de una versión del proyecto. Estos archivos se sacan de la base de datos comprimida en el directorio de Git, y se colocan en tu disco local para que los puedas usar o modificar, esto ocurre cuando clonamos o creamos un proyecto.
  • El área de preparación es un sencillo archivo, que se encuentra en la mitad de la grafica y generalmente contenido en tu directorio de Git, que almacena información acerca de lo que va a ir en tu próxima confirmación. Llamado en algunos casos como el índice, y se está convirtiendo en estándar el referirse a ello como el área de preparación.

Pero no te preocupes que en el siguiente Post con ejemplos y ejercicios aplicaremos estos conceptos, por el momento construya un esquema mental con esta información. Ahora teniendo en cuenta estos tres estados el flujo de trabajo básico en Git es algo así:

  1. Modificas una serie de archivos en tu directorio de trabajo.
  2. Preparas los archivos, añadiendo instantáneas de ellos a tu área de preparación, ósea tu carpeta local de trabajo.
  3. Confirmas los cambios, lo que toma los archivos tal y como están en el área de preparación, y almacena esa instantánea de manera permanente en tu directorio de Git.

¿Y que sigue en el camino de trabajar con  Git y  GitHub para aplicar en proyectos?

Por el momento vamos a parar con los conceptos de  Git, porque en el siguiente post profundizaremos en ello. Si No tienes una cuenta en GitHub te invitamos a que la crees, te servirá mucho para los posteriores Post. Por último las siguientes fuentes e información son importantes que las explore:

alejo8591

alejo8591

Instructor en tecnologías como: Node.JS, PhoneGap (Cordova), Django, MongoDB, HTML5, CSS3, JavaScript (Avanzado). Apasionado por el emprendimiento con enfoque tecnológico. Amante de la ingeniería del software y las buenas practicas ágiles de desarrollo.

10 comentarios en “Git y Github desde la Trinchera (Parte I)

  1. Pingback: GitHub « Clinks
    1. Lamento decirte que ya paso el segundo #RelampagoPHP el día 6 de Junio pero no te preocupes que se subira presentación y los ejercicios del proyecto 😉 Saludos

  2. Buen día, gracias por la información. he estado leyendo hace unos pocos días sobre github, esto debido a que encontré un proyecto de desarrollo de software que deseo tomar como referencia para mi trabajo, pero he visto que tiene archivos actuales y pasados, entonces mi pregunta ¿me puedes guiar o brindar algún link de referencia sobre como descargar la última versión de ese repositorio?, porque lo he descargado directamente desde el botón de descarga en tipo de archivo .zip, pero descarga todo incluyendo archivos pasados, entonces lo que me gustaría es descargar solamente la última versión. Gracias de antemano por la respuesta.

    1. Bueno varias preguntas me surgen:
      – Que tanto sabes de Git y si conoces como funcionan las ramas (branchs) y seleccionar la rama que necesitas?, claro esta, si esta divido por branchs…
      – Ha que te refieres con archivos pasados?
      – Y especificamente que necesitas de aquel proyecto, para saber si lo puedes sacar de la manera que necesitas…!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Cerrar