Cuando tratas de contribuir en un proyecto en GitHub, la forma habitual es haberlo mediante un «pull request»:
- Llevas a cabo un fork del repositorio del proyecto en GitHub.
- Clonas tu fork en tu equipo.
- Llevas a cabo los cambios.
- Cuando los tienes listos, los llevas a tu repositorio (el fork) en GitHub mediante un pull.
- Creas un «pull request» desde tu fork al repositorio principal y, si todo es correcto, los cambios se fusionan en el proyecto principal.
Cuando quieres volver a contribuir al proyecto tienes que sincronizar tu proyecto local con el proyecto principal, para evitar problemas en la fusión.
La forma de hacerlo es la siguiente:
1. En tu equipo configuras un repositorio remoto que apunta al repositorio principal:
$ git remote add upstream https://github.com/usuario_original/repositorio_original.git
2. Compruebas que tienes ambos repositorios: el original y el fork:
$ git remote -v
origin https://github.com/usuario_fork/repositorio_fork.git (fetch)
origin https://github.com/usuario_fork/repositorio_fork.git (push)
upstream https://github.com/usuario_original/repositorio_original.git (fetch)
upstream https://github.com/usuario_original/repositorio_original.git (push)
3. Traes los cambios desde el repositorio principal a las ramas de seguimiento locales:
$ git fetch upstream
4. Te cambias a la rama master local:
$ git checkout master
5. Fusionas en la rama master local la rama master del repositorio principal:
$ git merge upstream/master
A partir de aquí ya puedes empezar a trabajar en local para preparar el siguiente «pull request».
Más información: