Cómo colaborar en un proyecto en GitHub

GitHub es la red social más grande de programadores, donde se encuentran hospedados gran parte de los proyectos de software libre y código abierto, por lo tanto es necesario saber como actuar para realizar colaboraciones tanto a proyectos de programación, como a otros tipos de proyectos.

En esta guía me limitaré solo a un proyecto de programación, pero el proceso sería casi similar para otros tipos de proyectos.

Para comenzar hay que tener listo nuestro entorno con Git, y seleccionar el proyecto al cual deseamos hacer un aporte, en mi caso seleccioné MongoEngine un ODM de MongoDB para Python.

Fork del repositorio

El primer paso de todo este proceso es "forkear" el repositorio, vamos a la dirección del repositorio.

Presionamos el botón Fork.

Y ya tenemos el repositorio en nuestra cuenta.

Esto lo realizamos, porque la mayoría de las veces no tenemos permiso directo a los repositorios de los proyectos, por lo tanto debemos trabajar en un fork del repositorio para luego enviar los cambios al repositorio original.

Empecemos a trabajar!

Clonar el repositorio

Luego de tener el repositorio en nuestra cuenta, seleccionamos la dirección SSH del repositorio y lo clonamos con las herramientas de Git.

Código :

$ git clone git@github.com:yograterol/mongoengine.git

Nos vamos a la carpeta que se genera, en este caso mongoengine y verificamos la URL del repositorio.

Código :

$ cd mongoengine
$ git remote -v
origin   git@github.com:yograterol/mongoengine.git (fetch)
origin   git@github.com:yograterol/mongoengine.git (push)

Al ingresar a la carpeta nos encontramos en la rama master, es importante mencionar que se recomienda no hacer los cambios en la rama master, sino utilizar otras ramas, para comodidad y evitar perder otros cambios; el master se mantendrá solo para recuperar los últimos cambios del repositorio original.

Otra cosa que debemos hacer antes de realizar modificaciones es agregar la URL del repositorio original del proyecto, que si no tienes permiso entonces será de solo lectura.

Código :

$ git remote add upstream https://github.com/MongoEngine/mongoengine.git

Verificamos.

Código :

$ git remote -v
origin   git@github.com:yograterol/mongoengine.git (fetch)
origin   git@github.com:yograterol/mongoengine.git (push)
upstream   https://github.com/MongoEngine/mongoengine.git (fetch)
upstream   https://github.com/MongoEngine/mongoengine.git (push)

Actualizar la rama master

Como la utilidad de nuestra rama master es mantener todos los cambios del repositorio original, debemos actualizarla antes de comenzar a trabajar, así tendremos los cambios que se hagan a último minuto.

Ejecutamos:

Código :

$ git pull -r upstream master

Crear una rama

Se recomienda siempre hacer una rama desde master para realizar cambios y proponer su inclusión en el repositorio oficial.

Para crear una rama usamos la opción checkout de git.

Código :

git checkout -b feature-progressive-jpeg

Mi ejemplo lo baso en un problema reportado en GitHub para el almacenamiento de imágenes JPEG, por lo tanto llamo la rama con un nombre similar para lo que deseo hacer, esta no es una regla, solo lo uso para mantener un orden.

Codeando

En este paso realizamos todos los cambios que se desea hacer al proyecto, y verificamos con git status los archivos que hemos modificados.

Código :

$ git status
# On branch feature-progressive-jpeg
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   mongoengine/fields.py
#
no changes added to commit (use "git add" and/or "git commit -a")

Agregamos los archivos y hacemos un commit. Lo normal es ejecutar dos comandos.

Código :

$ git add .
$ git commit -m "mensaje" 

Pero si te gusta ahorrar caracteres, usa git commit -a -m "Mensaje", de esa manera agregas los archivos modificados y realizas el commit. Algo importante, el mensaje que uno coloque debe ser lo más descriptivo posible; NO colocar algo como "Cambio de archivo" o "Modificación simple", en este tipo de proyectos exigen ser detallados.

En mi caso este es mi commit.

Código :

$ git commit -a -m "Feature for progressive JPEG. Issue #486"
[feature-progressive-jpeg 341e1e7] Feature for progressive JPEG. Issue #486
 1 file changed, 14 insertions(+), 4 deletions(-)

Después de realizar el commit uno debe hacer el push hacia nuestro repositorio indicando la URL de nuestro repositorio y la rama que hemos trabajado.

Código :

$ git push origin feature-progressive-jpeg
Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 578 bytes | 0 bytes/s, done.
Total 4 (delta 3), reused 0 (delta 0)
To git@github.com:yograterol/mongoengine.git
 * [new branch]      feature-progressive-jpeg -> feature-progressive-jpeg

Revisamos nuestro repositorio en GitHub y este es el resultado:

Hacer un Pull Request

El último paso para que nuestro aporte se haga efectivo en el repositorio es enviar un Pull Request y esperar a que el encargado del repositorio lo revise, acepte y mezcle en la rama correspondiente a la versión del software.

Hacemos click en "Compare & Pull Request", nos llevará a otra página donde podremos detallar nuestro Pull Request.

Si todo está bien, realizamos el envío con el botón "Send Pull Request".

Y felizmente veremos lo siguiente. :D

[nota:6706c2e6cb] Algunos de estos pasos pueden variar según el proyecto con el cual se trabaje.[/nota:6706c2e6cb]

Enviar comentario

via Cristalab http://feeds.cristalab.com/~r/clab/~3/a-fGYlzV3uQ/

Advertisements

Tags:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: