Más de una vez se te habrán presentado las ganas de corregir algún "error" en algún código que te hayas encontrado en Git. Tal vez sean sólo ganas de demostrar tus conocimientos o simplemente tu deseo de ayudar a otros. Hacerlo es sencillo, para hacerlo, debes seguir los pasos que describo más adelante.
NOTA: Este gist está basado en el trabajo de BCasal.es, el cual pueden leer directamente aquí. 👍
1 Hacer fork al repositorio seleccionado 2 Clonar el repositorio forkeado 3 Actualizar la rama master 4 Crear nuestra propia rama 5 Hacer los cambios (la parte divertida) 6 Hacer un Pull Request
Una vez que decidas cual es el proyecto en el que deseas colaborar. Lo primero que debes hacer es forkearlo.
Luego de forkear el repositorio elegido, lo siguiente será clonarlo localmente. IMPORTANTE: El repositorio que clonaremos será el que acabamos de clonar en nuestra cuenta de Github. Para ello, usamos la tradicional instrucción:
$ git clone https://github.com/NuestroUsuario/RepositorioClonado.git
Entramos al directorio creado (en nuestro ejemplo: RepositorioClonado
y una vez allí, verificamos el repositorio:
$ git remote -v
Veremos algo como esto:
origin https://github.com/NuestroUsuario/RepositorioClonado.git (fetch)
origin https://github.com/NuestroUsuario/RepositorioClonado.git (push)
Luego de eso "enlazaremos" nuestro repositorio local con el repositorio original que hemos clonado/bifurcado usando la siguiente instrucción:
$ git remote add upstream https://github.com/AutorOriginal/RepositorioOriginal
Volvemos a verificar todo
$ git remote -v
Y deberíamos visualizar algo como esto:
origin https://github.com/NuestroUsuario/RepositorioClonado.git (fetch)
origin https://github.com/NuestroUsuario/RepositorioClonado.git (push)
upstream https://github.com/AutorOriginal/RepositorioOriginal (fetch)
upstream https://github.com/AutorOriginal/RepositorioOriginal (push)
Antes de realizar cualquier cambio, actualiza la rama master para que los repositorios se sincronicen, haciendo que tu nuevo repositorio contenga cualquier cambio de última hora en el repositorio original:
$ git pull -r upstream master
Este último comando debería retornarsos una respuesta como esta:
Desde https://github.com/AutorOriginal/RepositorioOriginal
* branch master -> FETCH_HEAD
* [nueva rama] master -> upstream/master
Ya está actualizado.
La rama actual master está actualizada.
Observa que el comando hace referencia al **RepositorioOriginal**
y no a nuestro **RepositorioClonado**
Ahora sí, ya estamos acercándonos a lo que deseamos. Pero antes de tocar el código, debemos crear una nueva
rama para nuestro trabajo, recuerda que es importante NO trabajar en la rama master
. Para ello usaremos la
siguiente instrucción:
$ git checkout -b nombre-de-nuestra-rama
Aquí es donde empieza lo bueno. Ahora es que podrás escribir, cambiar, eliminar y/o refactorizar todo el código que desees.
Luego de que hagas y registres (git add tu(s)-archivo(s)
) los cambios o agregados que deseabas hacer, deberás hacer
un commit.
Es importante que el mensaje del commit cumpla con las "reglas" para escribir commits. Puedes ver material (en inglés) sobre el tema accediento a este excelente artículo de Daniel Romero o en este otro de Chris Beams. 👏 👏 👏
$ git push origin nombre-de-nuestra-rama
Luego de lo último, deberás acceder a tu panel de control en Github y en hacer clic en "New pull request" ("Compare & Pull Request" en el original). Deberás seleccionar en el lado derecho la rama que creaste en tu repositorio local para realizar la comparación y, para concluir, escribir una breve descripción de los cambios/implementaciones/correcciones que hiciste. Envía el pull request
Ahora sólo te queda esperar a que el dueño o administrador del repositorio revise tu solicitud, la cepte y haga merge a los cambios que propusiste. Siéntate tranquilo, busca una taza de buen café caliente y espera tranquilo.