ver tag repositorio modificados delete crear archivos git github pull-request

tag - Envía una solicitud de extracción en GitHub solo para la última confirmación



git push tag (6)

Logré un proyecto en github y estoy haciendo cambios con éxito en mi maestro local y empujando al origen en github. Quiero enviar una solicitud de extracción, pero solo quiero incluir la última confirmación. La IU de solicitud de extracción en github.com muestra las últimas 9 confirmaciones y no sé cómo filtrarlas hacia abajo.

¿Estaba tratando de entender si debería crear una nueva sucursal local, verificar eso y de alguna manera restablecer o reconfigurar a upstream? ¿A continuación, aplique mi último compromiso de mi maestro por id a la nueva sucursal local y lo use para la solicitud de extracción?

Estoy tratando de entender correctamente los conceptos y descubrir las líneas de comando correctas para hacer lo que necesito.


Básicamente, debe crear una nueva rama y cherry-pick los compromisos que desea agregar.

Nota: es posible que los necesite antes de los comandos de pago / selección

git remote add upstream <git repository>

git remote update

git checkout -b <new-branch-name> upstream/master git cherry-pick <SHA hash of commit> git push origin <new-branch-name>

Luego, verá <new-branch-name> en github, cámbiela y podrá enviar la solicitud de extracción con los cambios que desee.


Cree una nueva rama a partir de la última confirmación, que también se encuentra en el repositorio de origen:

git branch new-branch origin/master git checkout new-branch

Luego use git cherry-pick para obtener la confirmación única para la que desea la solicitud de extracción. Si la rama con esta confirmación se denomina feature y la confirmación que desea es la última confirmación en esta rama, esto será

git cherry-pick feature

Suponiendo que este parche se aplique sin conflicto, ahora tiene una sucursal para la que puede hacer su solicitud de extracción.

En un segundo paso, ahora debe decidir qué hacer con su rama de feature . Si aún no ha publicado sus cambios en esta rama, es probable que el mejor procedimiento sea rebasar esta rama en una nueva rama (y eliminar la última confirmación, si esto no se hace automáticamente con git rebase ).


Esto casi me funcionó:

git checkout -b upstream upstream/master git cherry-pick <SHA hash of commit> git push origin upstream

La única diferencia fue esta:

git push origin upstream:upstream

Necesitaba cambiar esa última línea para que git push hiciera que la rama ascendente en mi repositorio de GitHub pudiera hacer PR a partir de ella.


La solución para crear una nueva sucursal (temporal), seleccionar y crear la solicitud de extracción para esa rama no me satisfacía. No quería cambiar mi repositorio para hacer un conjunto de confirmaciones disponibles, por lo que se me ocurrió la siguiente alternativa:

Primero crea archivos de parches para todos los compromisos de interés:

git format-patch -1 <sha>

Si el compromiso de interés es el último, puede usar HEAD lugar de <sha> .

Ahora, puede enviar los parches al mantenedor del repositorio de origen, quien puede aplicarlos:

git branch new-branch <master or some older commit where the fork diverged> git checkout new-branch git am < <the patch> ... git checkout master git merge new-branch

Finalmente, esto debería verse como si una rama temporal se fusionara con una solicitud de extracción, pero sin tener esa rama adicional en el repositorio de la bifurcación.


Terminé en una situación en la que había bifurcado un tenedor y quería enviar una solicitud de extracción al proyecto original.

Tuve:

  • orignal_project
  • forked_project (creado a partir del proyecto original en SHA: 9685770)
  • my_fork (creado a partir de un proyecto bifurcado en SHA: 207e29b)
  • un commit en mi fork (SHA: b67627b) que quería enviar al proyecto original

Para hacer esto, yo:

  1. creó una nueva rama desde el SHA donde se bifurcó el proyecto original
  2. sacó todo del proyecto original
  3. Cherry eligió el compromiso que quería enviar como una solicitud de extracción
  4. lo empujó todo hasta github

Los comandos de git eran algo así como:

  1. git rama mi-característica-solicitud 9685770
  2. git checkout my-feature-request
  3. git pull https://github.com/original_project/original_project.git
  4. git cherry-pick b67627b
  5. git push origin my-feature-request

Luego elegí mi solicitud de características como la rama para mi solicitud de extracción al proyecto original.


Ya había hecho la confirmación que quería poder aislar como una solicitud de extracción en la rama actual.

Así que revisé una nueva sucursal

git checkout -b isolated-pull

Y aquí es donde mi solución difiere de la de @Kevin Hakanson''s , ya que necesito restablecer esta rama al lugar en la historia que quiero diferenciar

git reset --hard [sha-to-diff-by]

Y seleccione el compromiso desde el que quiero crear una solicitud de extracción aislada

git cherry-pick [my-isolated-commit-sha]

Finalmente empújalo hasta el control remoto.

git push origin isolated-pull

Y tire de la solicitud dat shi.