2010-12-08 15 views
216

Me gustaría contribuir a un determinado proyecto en GitHub. ¿Debo tenedor? Sucursal ¿verdad? ¿Qué se recomienda y cómo hacerlo?¿Cómo contribuyo con el código de otra persona en GitHub?

+55

Otra ridícula cerca – surfer190

+2

yo escribimos un paso más detallada a paso guía sobre la contribución a Concrete5 en Github, pero el proceso podría aplicarse a cualquier proyecto. [Verlo] (https://www.exchangecore.com/blog/contributing-concrete5-github/). –

+7

Realmente no veo cómo esto 'no es constructivo'. Los votos y puntos de vista por sí solos proporcionan pruebas de que es una pregunta popular que las personas buscan responder. – Ian

Respuesta

166

Lo ideal es:

  1. Fork el proyecto
  2. hacer una o más bien comentado y limpias commit en el repositorio. Puede crear una nueva rama aquí si está modificando más de una parte o característica.
  3. Realice un pull request en la interfaz web de github.

si se trata de una nueva solicitud de función, no inicie primero la codificación. Recuerde publicar un problema para analizar la nueva función.

Si la característica está bien discutida y hay algunos +1 o el propietario del proyecto la aprobó, asigne el problema a usted mismo, luego siga los pasos anteriores.

Algunos proyectos no utilizarán el sistema de solicitud de extracción. Consulte con el autor o la lista de correo sobre la mejor manera de volver a introducir su código en el proyecto.

+4

+1. s/solicitud de fusión/solicitud de extracción /? – zoul

+4

Detalles sobre [bifurcación] de GitHub [http://help.github.com/forking/) y [solicitudes de extracción] (http://help.github.com/pull-requests/) –

+1

Sí, solicitud de extracción. La solicitud de fusión es una terminología significativa. –

27

Para añadir a Yann's answer, una vez que haya bifurcada un proyecto, se puede desarrollar en cualquier rama que desee (uno nuevo, o uno del proyecto original)

Recuerde:

+1

puede agregar detalles o enlaces en su segundo punto * (rama de rebase) *? – JorgeArtware

+1

@JorgeArtware He actualizado la respuesta con algunos enlaces que ilustran la rebase. – VonC

+0

@VonC Formulo aquí una pregunta, pero si cree que es necesario, haré una pregunta completamente nueva. ¿Por qué debería volver a establecer la base en lugar de fusionar, aparte de tener el 'historial directo'? En otras palabras, esto es lo que hago cuando contribuyo a algunos proyectos (después de la PR de mi rama de la característica se ha combinado para desarrollar y dominar las ramas): master 'git checkout;' 'git pull;' mismo para desarrollar (donde mi rama de características se fusionó primero) La diferencia que se me ocurre, después de leer "pull vs pull --rebase" y "merge vs rebase" es solo la historia plana. ¿Algo más profundo? – linuxbandit

15

Para añadir a Yan y VonC de las respuestas, esto es un buen recurso de github mismos: http://help.github.com/forking/

También asegúrese de buscar en el barra lateral derecha debajo del encabezado "colaborador".

10

No es un gran video Railscast here que le guía a través del proceso. También tiene una serie de buenos consejos, como mostrar cómo determinar en qué rama desea trabajar al contribuir, mediante pruebas, submódulos, etc.

Si bien este screencast se centra principalmente en los desarrolladores de Rails, la mayor parte de la información es válido para contribuir a cualquier proyecto de código abierto.

2

Github tiene muchas formas de colaborar en un proyecto. El modelo que más utiliza el proyecto es un modelo de solicitud de extracción. Comencé un proyecto para ayudar a las personas a realizar su primera solicitud de extracción de GitHub. Puede hacer lo práctico tutorial para make your first PR here

El flujo de trabajo es simple como

  • Tenedor el repositorio en GitHub
  • Clonar el repositorio a su máquina
  • Hacer una rama y hacer los cambios necesarios
  • transferir los cambios a su tenedor en GitHub git push origin branch-name
  • Vaya a su tenedor en GitHub para ver un botón Compare and pull request
  • clic en él y dar detalles necesarios
Cuestiones relacionadas