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 Git. GitHub 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 Git, antes de GitHub eran muy pocos los proyectos aun que grandes que lo implementaban.
Cosas curiosas en GitHub
- Estatus de los servicios que presta GitHub.
- Su mascota llamada Octocat que tiene cierta filosofía detrás de su diseño y uso.
- Una completa sección de bolsa de empleos generalmente para desarrolladores.
- Un evento llamado dodgeball (guerra de pelotas de espuma) que no es más que buscar recursos para donaciones.
- Completa sección de los proyectos más bifurcados (Forked).
- Una herramienta para copiar snippest del código que desarrollamos llamado github:gist además de que permite se embebido en otras páginas.
- Un completo sistema de seguimiento de problemas y bugs de los proyectos en los que trabajamos o realizamos forks.
- Herramienta para la creación de sitios web para nuestros proyectos, podría catalogarse como un framework básico y de fácil uso
¿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 benevolentes, Linus 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.
- 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í:
- Modificas una serie de archivos en tu directorio de trabajo.
- Preparas los archivos, añadiendo instantáneas de ellos a tu área de preparación, ósea tu carpeta local de trabajo.
- 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:
Estaré muy pendiente a la segunda parte.Saludos!!!!
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
Les dejo el enlace a la guía git, en español.
http://aetg-tvision-online.estuardo.tg.vg-ec.org
Espero siga creciendo los aportes por mas pequeños que estos sean, siempre seran validos
Te agradecemos también a ti por compartir ésta guía. 🙂
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.
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…!!
Aquí está una manera de traducir sus archivos github a través de una herramienta de localización web: https://poeditor.com/help/how_to_translate_a_language_file_from_a_github_project. Fue muy útil para mí.