Contribuir Flujo

Trabajando por Fork

Simplemente dirígete a la página de GitHub y haz clic en el botón “Fork”. Es así de simple. Una vez que hayas hecho eso, puedes usar tu cliente git favorito para clonar tu repositorio o simplemente dirigirse directamente a la línea de comando:

Clona tu fork en tu máquina local

git clone git@github.com:USERNAME/FORKED-PROJECT.git

Mantener Tu Fork Actualizado

Si bien este no es un paso necesario, si planeas hacer algo más que una pequeña solución rápida, querrás asegurarte de mantener tu fork actualizado rastreando el repositorio “upstream” original al que hiciste “fork”. Para hacer esto, deberás agregar un remoto:

Agregar repositorio ‘upstream’ a la lista de remotos

git remote add upstream https://github.com/meshery/meshery.git

(“meshery” se usa como repositorio de ejemplo. Asegúrate de hacer referencia al repositorio actual al que está contribuyendo, por ejemplo, “meshery-linkerd”).

Verifica el nuevo repositorio remoto llamado ‘upstream’

git remote -v

Siempre que quieras actualizar tu fork con los últimos cambios de ‘upstream’, primero deberás buscar las ramas del repositorio ‘upstream’ y los últimos “commits” para llevarlos a tu repositorio:

Obtener desde el remoto ‘upstream’

git fetch upstream

Ver todas las ramas, incluidas las de ‘upstream’

git branch -va

Ahora, revisa tu rama “master” y combina la rama “master” del repositorio ‘upstream’:

Haz “checkout” a tu rama “master” y haz “merge” de ‘upstream’

git checkout master
git merge upstream/master

Si no hay “commits” únicos en la rama “master” local, git simplemente realizará un “fast-forward”. Sin embargo, si has realizado cambios en “master” (en la gran mayoría de los casos, probablemente no deberías hacerlo), consulta la siguiente sección, es posible que tengas que lidiar con conflictos. Al hacerlo, ten cuidado de respetar los cambios realizados anteriormente.

Ahora, tu rama “master” local está actualizada con todo lo modificado en ‘upstream’.

Crear una “Branch” (haciendo tu trabajo) Siempre que comiences a trabajar en una nueva función o corrección de “bugs”, es importante que crees una nueva rama. No solo es un flujo de trabajo de git adecuado, sino que también mantiene tus cambios organizados y separados de la rama “master” para que puedas enviar y administrar fácilmente múltiples “pull requests” para cada tarea que completes.

Para crear una nueva rama y comenzar a trabajar en ella, realiza el siguiente flujo.

Consulta la rama “master”: quieres que tu nueva rama provenga de la rama “master”.

git checkout master

Crea una nueva rama (dale a tu rama su propio nombre informativo simple)

Para mejoras, utiliza feature/tu_nombre/issue# o feature/tu_nombre/nombre_del_feature

Para “bugs” usa bug/tu_nombre/issue# o bug/tu_nombre/nombre_del_bug

git branch feature/jdoe/567

Cambia a tu nueva rama

git checkout feature/jdoe/567

Ahora, ve a la ciudad hackeando y haciendo los cambios que quieras.

Enviar tus cambios (un “Pull Request”)

Antes de enviar tu “pull request”, es posible que quieras hacer algunas cosas para limpiar tu rama y hacer que sea lo más simple posible para que el “maintainer” del repositorio original pruebe, acepte y haga “merge” de tu trabajo.

En el tiempo que has estado trabajando en tus cambios, si se han hecho “commits” en la rama “master” ‘upstream’, deberás hacer “rebase” a tu rama de desarrollo para que al hacerle “merge” sea un “fast-forward” simple que no requiera ninguna trabajo de resolución de conflictos.

Obten los cambios de “master” ‘upstream’ y haz “merge” con la rama “master” de tu repositorio

git fetch upstream
git checkout master
git merge upstream/master

Si hubo nuevos “commits”, haz “rebase” a tu rama de desarrollo

git checkout feature/jdoe/567
git rebase master

Ahora, puede ser deseable reducir algunos de tus “commits” más pequeños al juntarlos en una pequeña cantidad de “commits” más grandes y cohesivos. Puedes hacer esto con un “rebase” interactivo:

Haz “rebase” a todos tus “commits” en tu rama de desarrollo

git checkout
git rebase -i master

Esto abrirá un editor de texto donde puedes especificar que “commits” aplastar.

Entrega

Una vez que hayas hecho tus “commits” y enviado todos tus cambios a GitHub, ve a la página de tu “fork” en GitHub, selecciona tu rama de desarrollo y haz clic en el botón de “pull request”. Si necesitas realizar algún ajuste en tu “pull request”, simplemente envía las actualizaciones a GitHub. Tu “pull request” rastreará automáticamente los cambios en tu rama de desarrollo y se actualizará.