Tutorial simple para hacer tu primer PR (Pull Request)

4
2826

Bueno, este si creo que será un tutorial bastante corto y esperemos que didáctico ;). Voy a poner a disposición de ustedes un pequeño repositorio en mi github para que puedan mandar sus PR y al mismo tiempo para que practiquen cómo hacer todos los pasos que voy a dejar a continuación. Aquí el link para hacer sus PR de prueba:

https://github.com/CodeLabora/TuPrimerPR


Bueno, vamos a listar rápidamente los pasos necesarios para mandar un PR:

  1. Fork
  2. Clone
  3. Remote
  4. Branch
  5. Cambios
  6. Add
  7. Commit
  8. Push
  9. PR

Los estoy poniendo en inglés para que encuentren sus respectivas opciones en la línea de comando de git.

Fork

Un fork es tu propia versión de un repositorio de Github. Este te permite clonar el trabajo de otro proyecto y tenerlo en tu cuenta para que puedas cambiar cosas sin preocupación de perder tus cambios. Para realizar un fork solo es necesario ir a la página y dar click al botón Fork que se encuentra en la parte superior derecha.

Diseño propio. Christopher Díaz Riveros

Una vez realizado el fork podrán ver que en su cuenta aparece el repositorio.

Diseño propio. Christopher Díaz Riveros

Clone

Ahora que ya tenemos un repositorio lo vamos a clonar a nuestro equipo. (Asumo que me siguen personas que usan Linux, pero para los usuarios de otros sistemas también existen versiones de git que pueden descargar en su página oficial.

Diseño propio. Christopher Díaz Riveros

Y con nuestro terminal hacemos lo siguiente.

Diseño propio. Christopher Díaz Riveros

Con esto tendremos una nueva carpeta llamada TuPrimerPR en la que estará nuestro proyecto de Github. entramos a la carpeta con el comando “cd TuPrimerPR” y veremos que dentro están los archivos que se encuentran en nuestro fork.

Diseño propio. Christopher Díaz Riveros

(Tengan en cuenta que la cantidad de archivos puede variar dependiendo de lo que encuentren en mi repositorio cuando hagan el fork)

Remote

Este es un paso opcional, pero que evita muchos problemas al momento de trabajar de manera continua en un proyecto. Fork por defecto crea una copia exacta del repositorio, pero en el momento exacto de la creación. Esto quiere decir que si el proyecto sigue avanzando, su repositorio se va a quedar atrasado con el pasar de los días u horas. “git remote ”  nos permite especificar otro punto de descarga (el proyecto original) y así poder actualizar nuestro proyecto cada vez que vemos que el proyecto padre se está actualizando.

Para encontrar tu proyecto padre solo hace falta usar el link que se encuentra justo abajo del nombre de tu repositorio. (Revisen la segunda imagen del apartado Fork). Vamos a agregar este dato a continuación:

Diseño propio. Christopher Díaz Riveros

Este es el proyecto original (lo vamos a llamar upstream para seguir la corriente de muchos proyectos).

Diseño propio. Christopher Díaz Riveros

Como pueden ver, he agregado el remote con ” git remote add <nombre> <URL> ”

Con esto vamos a poder actualizar el proyecto cuando sea necesario, pero no lo vamos a usar ahora porque no es necesario. (Eso lo explico más adelante, o en otro post, dependiendo de la necesidad)

Branch

Los branch (o ramas) permiten crear secciones de código que puedes trabajar en un entorno aislado. Esto quiere decir que lo que hagas en un branch no necesariamente afecta al código original hasta que se utilice un ” git merge “. También es una funcionalidad extra que te permite Github, cada vez que tu creas un branch, Github genera automáticamente la fuente del Pull Request cuando es necesario.

Diseño propio. Christopher Díaz Riveros

Ahora que estamos en nuestra rama especial, podemos trabajar en nuestra contribución.

Cambios

Voy a agregar un par de archivos para que vean cómo se hace.

Diseño propio. Christopher Díaz Riveros

“touch ” nos permite crear un archivo (si es que no existe) en blanco. con esto podemos pasar a nuestro siguiente paso.

Add

” git add ” nos permite agregar archivos a nuestro commit (los explico más adelante). Para ver qué archivos puedes agregar se puede utilizar el comando ” git status ”

Diseño propio. Christopher Díaz Riveros

Con esto tenemos todo preparado para nuestro Commit

Commit

Los commits son marcas (o hitos) en el tiempo. definen un estado para todos los archivos del proyecto y acumulan los cambios necesarios para llegar desde el principio del proyecto hasta el estado actual. Suena un poco complejo, pero es bastante sencillo, solo recuerda que son las escaleras de tu proyecto. Escribimos ” git commit ” y nos saldrá una ventana para escribir nuestro mensaje de commit.

Diseño propio. Christopher Díaz Riveros

Y al finalizar y guardar el texto, veremos algo como:

Diseño propio. Christopher Díaz Riveros

Donde se muestra un resumen de lo que hace el commit.

Push

Con push estamos subiendo a nuestra cuenta de Github todos los commits que tenemos en el equipo que no se encuentran en nuestro repositorio en internet. Esto hará que Github pueda generar el nuevo PR de manera automática.

Diseño propio. Christopher Díaz Riveros

Noten que estamos usando el nombre de nuestro branch y que nos solicita nuestro usuario y contraseña. Al final nos muestra que se ha creado el branch miMejora dentro de nuestra cuenta de Github. Vamos a ver en el navegador lo que hemos conseguido. 😉

PR

Diseño propio. Christopher Díaz Riveros

Como pueden ver, se ha creado una nueva línea que dice “Compare & Pull request”. Esta funcionalidad de Github nos permite crear el PR de manera sencilla, vamos a dar click para ver qué sucede.

Diseño propio. Christopher Díaz Riveros

Github es bastante inteligente. Como pueden apreciar, partes el commit se agregan al formulario para envío. Solo es necesario dar click al botón y listo 🙂 Sencillo.

Extra

Esto es el detrás de cámaras de los proyectos, aparece el PR y el encargado decide si aceptar o no, o escribir más mensajes. En mi caso lo voy a aceptar de manera instantánea.

Diseño propio. Christopher Díaz Riveros

Una vez realizado el merge, podrán ver el log de commits del proyecto y ver su nombre en él.

Diseño propio. Christopher Díaz Riveros

Pero ahora tenemos un problema. Ese commit no aparece en nuestro repositorio, solamente en el del proyecto. ¿Recuerdan nuestro paso de remote? Ahora es cuando rinde frutos 🙂

Volvemos a nuestro branch master y hacemos lo siguiente:

Diseño propio. Christopher Díaz Riveros

Con esto hemos descargado toda la información del proyecto original a nuestro equipo. Como pueden apreciar, ahí aparece nuestro commit. Ahora vamos a guardar todo este trabajo en nuestro repositorio de Github para poder eliminar el branch que tiene el aporte que ya agregaron al proyecto.

Diseño propio. Christopher Díaz Riveros

Ahora que ya tenemos nuestro repositorio de Github actualizado vamos a borrar nuestro branch, pero primero nos aseguramos que esté dentro de nuestra rama principal (master)

Diseño propio. Christopher Díaz Riveros

Como pueden ver tuve un ligero error, esto era porque me encontraba en mi branch miMejora al momento de quere borrar. Esto se arregla regresando al branch master.

Conclusión

Listo 🙂 tan sencillo como eso. Ahora que dominan los oscuros secretos de Github para mandar PR, espero ver sus contribuciones en diversos proyectos. Y si desean pueden dejar su primer PR en mi repositorio 😉 para el recuerdo.

No he tocado mil y un beneficios de Git (OJO, no Github) y como es de esperar de desarrolladores que están ligados a la comunidad del Kernel, Git es una herramienta sumamente poderosa, con cientos de funcionalidades.

Para poder tener una mejor idea de lo que hace y todo el poder de Git, les recomiendo mucho este libro. Estoy seguro que les ayudará bastante a mejorar en el manejo de git.

Saludos y espero que les ayude 😉

COMPARTIR
Artículo anteriorMi primer PR (Pull Request) en Github
Artículo siguienteCómo buscar emoji desde la consola
ChrisADR

Soy un jóven desarrollador de software, apasionado por la seguridad informática. Colaboro en mi comunidad linux (Gentoo Linux) como Coordinador de Avisos de Seguridad de Gentoo (GLSA) y en diversos proyectos FOSS como git y el kernel.

4 COMENTARIOS

Dejar una respuesta