¿Cómo enviar una solicitud de extracción desde un repositorio clonado?

82

¿Cómo enviar una solicitud de extracción desde un repositorio clonado localmente existente?

A menudo, quiero ver el código fuente de algunas bibliotecas de github, así que lo clono. Más tarde, descubro algún problema con el código y lo incluyo en una lista de correo, a menudo de pasada. El autor de la biblioteca dice "buen hallazgo, ¿puede enviar una solicitud de extracción?".

Y la respuesta es "no tan fácil". Aún no he bifurcado el repositorio, lo he clonado. ¿Y no parece que pueda encontrar una manera de enviar una solicitud de extracción desde un repositorio clonado?

Si este límite es cierto, parece que la reacción sensata es bifurcar cualquier cosa y todo lo que veas, solo para que, si alguna vez quieres contribuir, puedas hacerlo. Y eso llena tu cuenta de github con muchas bifurcaciones inactivas.

No parece que se hable mucho sobre este tema. ¿Soy la única persona a la que afecta este problema?

Ben Hutchison
fuente
4
Desde que noté esta pregunta muy similar: stackoverflow.com/questions/4209208/…
Ben Hutchison

Respuestas:

55

Bifurque el repositorio en GitHub, luego agregue su repositorio de bifurcación como un control remoto a su copia clonada local:

git remote add myfork https://github.com/<myGitHubAccountName>/<repoName>.git

Entonces puedes empujar hacia tu tenedor:

git push myfork master

Si está haciendo algo más que esta solicitud de extracción, puede eliminar el origincontrol remoto y nombrar su bifurcación como origen:

git remote rm origin
git remote add origin https://github.com/<myGitHubAccountName>/<repoName>.git

Normalmente esto es lo que hago. A veces agrego el origen original, por upstreamlo que todavía tengo una referencia a él.

bobthecow
fuente
5
¿Cómo se hace esto sin bifurcar?
Aaron Hall
3
Si tiene acceso push a un repositorio, puede abrir una solicitud de extracción entre las ramas de ese repositorio. Deberá enviar su sucursal local a un nuevo nombre de sucursal en origin, algo como git push origin HEAD:my-feature. Luego, puede usar la interfaz de usuario web para abrir una solicitud de extracción de my-featurea master.
Bobthecow
11
@Torek: otro flujo de trabajo arruinado. ¿Es realmente tan difícil realizar una acción simple? Pensé que este era uno de los objetivos principales de git: facilitar la colaboración y el intercambio de parches en un modelo descentralizado. No hace falta ser un científico espacial para deducir que el objetivo debe ser simple y fácil de lograr, ya que es un flujo de trabajo fundamental. Esos tipos necesitan contratar a un experto en UX ya que todos carecen del sentido común para resolver esto por sí mismos.
jww
10

Si está de acuerdo con la instalación de otro binario en su ruta, github ha lanzado una pequeña herramienta llamada hub.

Si ha clonado el repositorio de otra persona:

$ hub fork  # This creates a fork and adds your repo as a remote

$ git push YOUR_USER feature  # push the changes to your new remote

$ hub pull-request  # will open your browser
rdrey
fuente
Gracias por compartir sobre Hub y me encanta :) Estaba exactamente en esta situación y el hub lo hace muy conveniente para mí.
Wahib Ul Haq
Es importante tener en cuenta que "hub fork" aún crea el repositorio bifurcado en su cuenta en GitHub.
Granger
-1

Siempre clono en lugar de fork también y los siguientes pasos funcionan para mí:

  1. Cree una nueva rama en su repositorio clonado y realice el nuevo cambio.
  2. Empuje el cambio a su rama de la siguiente manera:

    git push origin insert_your_working_branch_name

  3. Ahora debería poder encontrar su rama de trabajo en la solicitud de extracción de github master.

ohmyan
fuente
3
No entiendo cómo podría funcionar el paso 2 anterior, si ha clonado el repositorio de alguien para el que no tiene derechos de inserción.
Ben Hutchison