¿Cómo contribuyo al código de otros en GitHub? [cerrado]

231

Me gustaría contribuir a cierto proyecto en GitHub . ¿Debería bifurcarlo ? Ramificarlo ? ¿Qué se recomienda y cómo hacerlo?

wizztjh
fuente
61
Otro cierre ridículo
stephen
44
Escribí una guía paso a paso más detallada sobre cómo contribuir a Concrete5 en Github, pero el proceso podría aplicarse a cualquier proyecto. Compruébelo usted mismo .
Joe Meyer
77
Realmente no veo cómo esto 'no es constructivo'. Los votos y puntos de vista por sí solos demuestran que es una pregunta popular que la gente busca haber respondido.
Ian
1
tal vez con una votación mayoritaria suficiente, se debería permitir que se resuciten nuevamente las preguntas previamente cerradas, y dejar que las personas contribuyan al hilo nuevamente.
Peter Teoh,

Respuestas:

180

Idealmente usted:

  1. Bifurca el proyecto
  2. Realice una o más confirmaciones bien comentadas y limpias en el repositorio. Puede crear una nueva rama aquí si está modificando más de una parte o característica.
  3. Realice una solicitud de extracción en la interfaz web de github.

Si se trata de una nueva solicitud de función, no inicie la codificación primero. Recuerde publicar un problema para discutir la nueva característica.

Si la función se discute bien y hay algunos +1 o el propietario del proyecto la aprobó, asígnele el problema a usted mismo y 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 recuperar su código en el proyecto.

Yann Ramin
fuente
44
Detalles sobre las bifurcaciones de GitHub y solicitudes de extracción
Gabriel Grant
1
Sí, solicitud de extracción. La solicitud de fusión es una terminología crítica.
Yann Ramin
2
@MariusKavansky es al revés! Una vez que sabes en qué trabajar, solo tú contribuyes :)
hashbrown
después de que contribuí a algún proyecto de código abierto. Creo que es una mejor idea abrir un tema para discutir la nueva característica si es una característica nueva. Si es una característica o problema que se discute bien, debe asignarse el problema a usted mismo y luego realizar los pasos anteriores. Este es mi 2cents.
wizztjh
@hashbrown, Él pregunta dónde está la "lista" de características solicitadas hasta ahora. Aquellas características que ya están siendo solicitadas y + 1ed.
Pacerier
31

Para agregar a la respuesta de Yann , una vez que haya bifurcado un proyecto, puede desarrollarlo en cualquier rama que desee (una nueva o una del proyecto original)

Recuerda:

VonC
fuente
1
¿Puedes agregar detalles o enlaces en tu segundo punto (rama de rebase) ?
JorgeArtware
1
@JorgeArtware He actualizado la respuesta con algunos enlaces que ilustran el rebase.
VonC
@VonC Hago una pregunta aquí, pero si crees que es necesario, haré una pregunta completamente nueva. ¿Por qué debería rebajar en lugar de fusionar, aparte de tener la "historia directa"? En otras palabras, esto es lo que hago cuando contribuyo a algunos proyectos (después de que el RP de mi rama de características se ha fusionado para desarrollar y masterizar ramas): lo git checkout master; git pull;mismo para desarrollar (donde mi rama de características se fusionó primero) La diferencia que puedo pensar de, después de leer "pull vs pull --rebase" y "merge vs rebase" es solo el historial plano. ¿Algo más más profundo?
linuxbandit
@grasshopper en términos de "contribución" (el contexto de esta página), siempre desea cambiar sus compromisos locales sobre las ramas actualizadas antes de presionar: eso hará que dicha contribución sea trivial para que el mantenedor la integre a la rama del proyecto original. En el contexto de su pregunta, donde se ha aceptado su RP, seguro, puede fusionar en lugar de cambiar la base para actualizar las sucursales existentes.
VonC
(Lo siento, cambié el nombre de usuario hace un momento para reflejar mi github) - @VonC gracias, por lo que todas las sugerencias que estaba leyendo sobre el rebase se aplican antes de las relaciones públicas, tiene sentido. Para reflejar el PR aceptado y fusionado dentro de mi repositorio local, ¿hay alguna práctica común (rebase en lugar de fusionar), o puedo hacer lo que sea? ¿Qué sucede si presentaré otro PR?
linuxbandit
15

Para agregar a las respuestas de Yan y VonC, este es un buen recurso de los propios github: http://help.github.com/forking/

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

brycemcd
fuente
10

Hay un gran video Railscast aquí que te guía a través del proceso. También tiene una serie de buenos consejos, como mostrar cómo determinar en qué rama es posible que desee trabajar al contribuir, usar 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álida para contribuir a cualquier proyecto de código abierto.

Instantánea
fuente
4

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 hacer su primera solicitud de extracción de GitHub. Puedes hacer el tutorial práctico para hacer tu primer PR aquí

El flujo de trabajo es simple como

  • Bifurca el repositorio en github
  • Clona el repositorio en tu máquina
  • Hacer una rama y hacer los cambios necesarios.
  • Empuje sus cambios a su bifurcación en GitHub git push origin branch-name
  • Ve a tu bifurcación en GitHub para ver un Compare and pull requestbotón
  • Haga clic en él y proporcione los detalles necesarios.
sudo bangbang
fuente
2

Flujo de trabajo técnico

Sugeriría el siguiente flujo de trabajo:

  1. Bifurca el repositorio (a través de la interfaz web de GitHub: botón "Bifurcación")
  2. En su repositorio bifurcado, copie la URL
  3. Clonar (en la línea de comando)

    git clone <url-from-your-workspace>

  4. Ingrese el directorio que acaba de crear y cree una rama

    cd <directory> git checkout -b <branchname>

  5. Ahora haz tus cambios

  6. Puede crear una o más confirmaciones después de cada cambio:

    commit -a

  7. Cuando termine, empuje sus cambios

    git push origin <branch>

  8. En su línea de comando, debería ver una URL para crear el RP . Visite la URL y haga clic en el botón para crear un RP.

  9. De lo contrario, visite el repositorio en el navegador y le ofrecerá un botón para crear la solicitud de extracción

Eso es.

Entonces, básicamente, bifurcaste el repositorio a tu espacio de trabajo, creaste una nueva rama y presionaste esa nueva rama.

Si luego realiza más PR desde el mismo repositorio clonado, debe sincronizar (obtener los últimos cambios del repositorio original) antes de crear otra rama para otro PR:

git checkout master
git remote add upstream <url-of-original-repo>
git pull upstream master

Otras Consideraciones:

  • el proyecto puede tener Pautas de contribución: busque un archivo CONTRIBUTING.rst o .md
  • es posible que desee seguir las pautas de codificación para el proyecto
  • es posible que desee resumir su idea como problema primero
  • es posible que desee ver la pestaña Solicitudes de extracción para el proyecto y verificar si hay relaciones públicas abiertas, relaciones públicas combinadas

Estas sugerencias están aquí para salvarlo de la molestia de poner trabajo en un RP que no se fusionará. Si hay actividad en el proyecto y las relaciones públicas se fusionan, esta es una buena señal. Si hay pautas de contribución, sígalas.

Siempre se cortés. Recuerde, los encargados del proyecto no están obligados de ninguna manera a fusionar su RP. ¿Tienes algo valioso para agregar al proyecto?

Sybille Peters
fuente
1
Proceso bien detallado (más preciso que mi respuesta de 9 años). Votado
VonC