lunes, 2 de octubre de 2017

Guía rapida de GitHub

Esta guía es una traducción de la guía oficial,  enriquecida con comentarios y experiencia propia, está validada para Windows y tiene como objetivos aprender a:
  • Crear y usar un repositorio
  • Iniciar y administrar una rama en GitHub
  • Abrir una petición Pull y llevar los cambios de una rama arbitraria a la rama principal
  • Subir un proyecto local a Git Hub


Qué es GitHub?
GitHub es una plataforma de alojamiento de archivos y control de versiones, usado principalmente para alojar códigos fuente y colaboración. Permite que tu y otros puedan trabajar juntos sobre los mismos proyectos sin importar el lugar  en donde se encuentren. GitHub está integrado con Git, Git es el sistema que permite llevar el control de versiones. Las principales ventajas de usar un sistema de control de versiones son:

  • Cuando modificas un archivo y confirmas los cambios, se crea una nueva versión de tu archivo, Git lleva el historial de las versiones y te permite acceder a ellos cuando así lo requieras.
  • Permite la colaboración simultanea de otros sobre el mismo archivo. Con Git puedes exponer tus proyectos al publico mediante Internet, cualquier persona con acceso a tu proyecto puede modificar los archivos, Git cuida y controla las modificaciones para asegurar cambios coherentes.
  • Tu proyecto está accesible y puedes acceder a el en donde quiera que te encuentres.
Normalmente uno tendría que configurar su propio servidor para Git, afortunadamente con la plataforma GitHub esto no es necesario y al menos para uso personal es gratuito. Ademas de GitHub existe otra plataforma de alojamiento que usa Git, BitBucket.

Esta guía te enseñará lo esencial  de GitHub, veremos conceptos como: repositorios, branches(ramas), commits, y peticiones Pull. Crearemos un repositorio Hello Word y aprenderás el flujo de trabajo de las peticiones Pull de GitHub, estas peticiones son una forma popular de crear y revisar código.

Crear un Repositorio
Un repositorio es usado usualmente para organizar un solo proyecto. Los repositorios pueden alojar directorios y archivos, imágenes, vídeos, hojas de calculo, y set de datos -cualquier cosa que tu proyecto necesite. Nosotros recomendamos incluir un archivo Readme o un archivo con información acerca de tu proyecto. GitHub lo hace fácil, te permite agregar un archivo Readme al mismo tiempo que creas tu nuevo repositorio. También ofrece otras opciones comunes como un archivo de licencia.
El repositorio hello-word que vamos a crear puede ser un lugar donde guardes tus ideas, recursos o compartir y discutir cosas con otros. Recuerda que un repositorio tiene asociado un historial de modificaciones, puedes consultar quien, cuando y que cambios realizaron. Es esto lo que lo diferencía de un servidor de archivos.

Para crear un nuevo repositorio
1. Ingresar con tu cuenta a GitHub
2. En la esquina superior derecha, hacer click en el botón + y seleccionar New Repository
3. Nombrar el repositorio como hello-word
3. Escribir una descripción corta
4. Seleccionar Initialize this repository with a README

Click en Create Repository
Los pasos descritos se usan cuando se desea crear un repositorio nuevo, de uso general y que se pretende gestionar desde la plataforma GitHub.

Crear un Branch (en español, rama)
Branching (en español, el acto de manejar ramas) es la forma de trabajar con diferentes versiones de un repositorio al mismo tiempo.
Por defecto tu repositorio tiene un branch llamado master que esta considerado a ser el branch definitivo. Usamos branches (ramas) para experimentar y realizar cambios antes de darle el visto bueno y pasarlo al branch master.

Cuando creamos un branch del branch master, lo que en realidad estamos haciendo es crear una copia, un snapshot (captura) del branch master tal cual se encuentre al momento de hacer el branch. Si alguien más realiza cambios al branch master mientras tu estás trabajando en tu branch, puedes perfectamente llevar esos cambios al tuyo.

En el siguiente diagrama podemos ver:
  • El branch master
  • Un nuevo branch llamado feature (funcionalidad), porque estamos realizando una nueva funcionalidad en este branch
  • El proceso por el que tiene que pasar el branch feature antes de llevar estos cambios a la rama principal master.


Alguna vez has guardado diferentes versiones de un archivo? Algo como:
story.txt
story-joe-edit.txt
story-joe-edit-reviewed.txt

Las ramas cumplen un objetivo similar con los repositorios, tener varias versiones.

En GitHub, programadores y diseñadores usan las ramas para solucionar errores e implementar nuevas funcionalidades, fuera de la rama principal, siendo la rama principal la rama en producción. Una vez que los cambios o funcionalidades están validados, se llevan a la rama principal master.

Para crear una nueva rama
1. Ir al repositorio hello-world (previamente debes haber ingresado a tu cuenta)
2. Click en la lista desplegable que dice "branch:master", lista que se encuentra encima de la lista de archivos (ver gif).
3. Ingresa un nombre para la rama en el campo de texto, readme-edits.
4. Click en el botón azul Create branch, o presiona enter en el teclado.



Ahora ya tienes dos ramas, master y readme-edits. En estos momentos tenemos exactamente lo mismo en las dos ramas. Más adelante agregaremos cambios a nuestra nueva rama.

Realizar cambios y commit
En GitHub, a la acción de guardar los cambios (agregar nuevos archivos, agregar o modificar contenidos de archivos) en el repositorio, se le conoce como realizar un commit. Cada commit tiene un mensaje que describe brevemente el porqué de los cambios realizados. Los mensajes de los commits capturan la historia de tus cambios para que otros programadores puedan entender que es lo que has hecho y porqué lo has hecho.

Realizar cambios y guardarlos
1. Seleccionar la rama readme-edits

2. Click en el archivo README.md
3. Click en el icono Editar, ubicado en la esquina superior derecha del archivo a editar.

4. En el editor escribe algunas lineas.
5. Escribe un mensaje del commit que describa tus cambios.
6. Click en el botón Commit changes


Estos cambios serán aplicados solo al archivo README en tu rama readme-edits, ahora esta rama contiene contenido que es diferente a la rama master

Abrir una petición Pull
Ahora que ya tenemos cambios fuera de la rama master, estamos en condiciones de abrir una petición Pull
Las peticiones Pull son el corazón de la colaboración en GitHub. Cuando abrimos una petición Pull, estamos proponiendo nuestros cambios y solicitando que alguien los revise y los incluya en su rama. Las peticiones Pull muestran diferencias diffs, del contenido en ambas ramas, cambios que fueron agregados se muestran en verde, cambios que fueron eliminados se muestran en rojo.
Tan pronto como realices un commit puedes abrir una petición Pull, y empezar una discusión para recibir retroalimentación, incluso si tu funcionalidad no esté terminada completamente, puedes ir haciendo commits  y pulls por cada iteración.
Las peticiones Pull pueden estar dirigidos a una persona en especifico o a un grupo de personas, para mencionarlos, en tu comentario debes agregar @nombre_usuario.
Es más, puedes abrir una petición Pull, para ti mismo e incluir los cambios de una rama a otra, es una excelente manera de aprender el flujo de trabajo.

Abrir una petición Pull para los cambios realizados en el archivo Readme
1. Seleccionamos nuestro branch donde se encuentra el commit
2. Click en el botón New Pull Request

3. Verificar los cambios en la sección donde se muestra el diff (parte inferior de la página, bajar el scrollbar)


4. Una vez que comprobaste que los cambios son correctos, puedes hacer click en el botón verde Create Pull Request, muy importante, lee el mensaje remarcado en el rectángulo rojo, en mi caso me dice que no hay conflicto y que puedo hacer un merge.
Si quieres también puedes agregar un mensaje antes de crear la petición Pull

Hacer un Merge a tu petición Pull
Se le conoce como Merge (combinar o mezclar en español) a la acción de llevar los cambios de una rama a otra. No te preocupes, Git lo hace por ti, al menos que exista un conflicto entre las ramas.
Bien, vamos a llevar los cambios que hicimos en la rama readme-edits a la rama master.
1. Posiciónate en la pestaña Pull Requests
2. Click en el botón verde Merge pull request para unir los cambios a la rama master.

3. Click en Confirm merge

Una vez confirmado el merge, Git te la opción de eliminar la rama Delete branch

Subir un proyecto a repositorio de GitHub
Si en nuestro equipo local ya contamos con un proyecto y deseamos subirlo a GitHub, debemos seguir otra serie de pasos.
En mi equipo local tengo el siguiente proyecto llamado github-project, proyecto que subiré a GitHub



1. Instalar Git para Windows, lo puedes descargar desde https://git-scm.com/downloads
2. Ingresar al directorio del proyecto, click derecho y seleccionar Git Bash Here
3. Usaremos el comando init de Git. El comando init de Git crea un repositorio local, para poder trabajar con Git primero debemos tener un repositorio local.
4. Crear un archivo .gitignore con la lista de excepciones
5. Agregar todos archivos al repositorio con la sentencia git add .
6. Ejecutar un commit para aplicar los cambios con la sentencia git commit -m 'first commit', al ser la primera vez nos pedira configurar el email y nombre del usuario. Con el commit lo que hacemos es aceptar los cambios en nuestro repositorio local.

7. Crear un repositorio en GitHub, siguiendo los pasos mencionados anteriormente pero sin seleccionar Initialize this repository with a README de preferencia asignarle el mismo nombre que el del proyecto.

7. Vincular nuestro repositorio local con el repositorio remoto, con la sentencia git remote add origin https://github.com/marcosrobertos/github-project.git
8.  Finalmente enviar los cambios de nuestro repositorio local a nuestro repositorio remoto, con la sentencia git push -u origin master, donde origin es un alias a la url de nuestro repositorio remoto y master es la rama por defecto. Git levantará un popup donde debos ingresar el usuario y contraseña de GitHub


Si vamos a GitHub veremos nuestros cambios


Referencias
https://guides.github.com/activities/hello-world/

No hay comentarios:

Publicar un comentario