Mi solicitud de extracción se ha fusionado, ¿qué hacer a continuación?


112

Recientemente participé en un proyecto de GitHub. Hice lo siguiente:

Bifuré el repositorio original, lo cloné en mi máquina local, hice una rama para corregir el error existente, corrigió el error en esa rama, empujé esa rama a mi repositorio, envié una solicitud de extracción al autor del repositorio para fusionar mi rama de corrección a su rama maestra.

Fue la primera vez que me comprometí con el código de otro, así que no sé qué hacer. Ahora mi solicitud de extracción se ha fusionado con el repositorio / proyecto original del autor.

¿Qué debería hacer después? ¿Debo eliminar la rama? ¿Debería fusionar la rama? ¿Algo más?


Información adicional:

El proyecto original tiene una sola rama.

También tengo un conjunto ascendente para obtener las últimas actualizaciones del repositorio original. (Lo hice así) :

git remote add upstream https://path/to/original/repo.git

Y recibo actualizaciones como esta:

git fetch upstream

12
Ghehe, no eres el único que está luchando: Video de YouTube :)
Anne

Respuestas:


65

Lo que debe hacer a continuación es: continuar contribuyendo con nuevas funciones o corregir otros errores en sus propias ramas dedicadas (empujadas solo a su bifurcación).

Lo que significa que su tenedor permanece, pero las ramas dentro de su tenedor pueden ir y venir.

También puede eliminar la bifurcación si no planea contribuir más, pero eliminará la entrada correspondiente en 'Repositorios a los que contribuye' .

Es más fácil:

  • elimine su fixrama (en realidad, ahora está eliminada para usted ) en su bifurcación (y en su repositorio clonado local: consulte " Eliminar una rama de Git tanto local como remotamente ")
  • git pull upstream master(si masterfue la rama en la que se integró su corrección: la fusión será de avance rápido): no se necesita rebase en este punto.
  • vuelva a crear una rama de corrección en la parte superior de su local actualizado master(ahora con la última versión upstream master).

Sin embargo, nunca olvide un paso antes de enviar cualquier solicitud de extracción futura :

rebase primero su rama actual ( fix) desde la rama de destino ascendente

( upstreamsiendo el repositorio original que ha bifurcado: consulte " ¿Cuál es la diferencia entre el origen y el origen en github ")

Antes de enviar cualquier cosa al repositorio original ("upstream"), debe asegurarse de que su trabajo se base en lo último de dicho repositorio original (o la solicitud de extracción no resultará en una combinación de avance rápido una vez aplicada de nuevo en upstreamrepositorio).
Consulte, por ejemplo, " Flujo de trabajo para administrar solicitudes de extracción en repositorios compartidos en github ".

En otras palabras, upstreampuede evolucionar (tener nuevas confirmaciones presionadas) mientras estás ocupado arreglando cosas. Necesita reproducir sus correcciones además del último trabajo de upstream para asegurarse de que sus confirmaciones sigan siendo compatibles con la última versión de upstream.


El OP Santosh Kumar pregunta en los comentarios :

He tirado y fusionado del upstreammaestro, ¿y ahora qué?

Si no ha realizado ninguna corrección nueva desde su solicitud de extracción reciente, consulte más arriba (elimine y vuelva a crear una nueva rama fixsobre su actualización master).

Si ha realizado más trabajo desde su solicitud de extracción, no me fusionaría upstreamsi quisiera hacer una nueva solicitud de extracción: extraería y reajustaría :

git pull --rebase upstream master

De esa manera, todo mi nuevo trabajo local se reproduce sobre las upstream masterconfirmaciones más recientes (obtenidas en mi repositorio local), suponiendo que esa mastersea ​​la rama de destino que integrará mi futura solicitud de extracción.

Entonces puedo empujar mi trabajo local a ' origin', que es mi bifurcación en GitHub de upstream.
Y desde mi bifurcación en GitHub, puedo hacer una solicitud de extracción de manera segura, sabiendo que solo agregará nuevas confirmaciones upstreamsin necesidad de ninguna resolución de fusión: fusionar esas nuevas confirmaciones en el upstreamrepositorio significará una combinación simple y rápida.


A git pull --rebasesin especificar la rama sobre la que desea volver a establecer la base de su rama (actualmente verificada) fixno funcionaría:

Eso ( git pull --rebase) dice:

You asked to pull from the remote '`upstream`', but did not specify a branch. 

¿Debería agregar maestro al fin? ¿Y qué hará esto ?, ¿eliminará mi fixrama?

Sí, puede especificar la rama que será el objetivo de la solicitud de extracción, por ejemplo ' master'.
Eso no eliminará su fixrama, pero la reproducirá en la parte superior masterobtenida en su repositorio.


¿Puede explicar la rebase de la parte aguas arriba ?
Santosh Kumar

@SantoshKumar, debe reajustar sus confirmaciones locales en la parte superior del repositorio original (aquí se hace referencia como upstream) antes de presionar hacia su bifurcación y realizar su solicitud de extracción: consulte stackoverflow.com/questions/9257533/…
VonC

Ya, sé que estoy haciendo una pregunta básica . He tirado y fusionado de aguas arriba a maestro, ¿ahora qué?
Santosh Kumar

@SantoshKumar es una buena pregunta. He editado la respuesta para abordarlo. Busque "El OP Santosh Kumar pregunta en los comentarios: ..."
VonC

Eso dice: You asked to pull from the remote 'upstream', but did not specify a branch.¿Debería añadir masteral fin? ¿Y qué hará esto ?, ¿eliminará mi rama de arreglo ?
Santosh Kumar

18

Primero, felicitaciones por su primera contribución a un proyecto en Github.

El flujo de trabajo habitual de Github es crear una nueva rama para cada problema que resuelva. De esa manera, el responsable del mantenimiento del repositorio principal puede decidir cuál de sus soluciones fusionar y cuál rechazar. Después de que una rama se fusionó en sentido ascendente, la rama ya no será necesaria y, por lo general, se puede eliminar.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.