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

Resuelto Kevin Hakanson asked hace 13 años • 7 respuestas

Bifurqué un proyecto en github y estoy realizando cambios exitosamente 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 interfaz de usuario de solicitud de extracción en github.com muestra las últimas 9 confirmaciones y no sé cómo filtrarlas.

Estaba tratando de entender si debería crear una nueva sucursal local, verificarla y de alguna manera restablecerla o cambiarla a upstream. ¿Luego aplicar mi última confirmación de mi maestro por identificación a la nueva sucursal local y usarla para la solicitud de extracción?

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

Kevin Hakanson avatar Mar 10 '11 12:03 Kevin Hakanson
Aceptado

Básicamente, necesitas crear una nueva rama y seleccionar las confirmaciones que deseas agregarle.

Nota: es posible que los necesite antes de los comandos de pago/seleccionado

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>la rama en github, cambie a ella y podrá enviar la solicitud de extracción con los cambios que desee.

Kevin Hakanson avatar Mar 11 '2011 05:03 Kevin Hakanson

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 utilícelo git cherry-pickpara obtener la confirmación única para la que desea la solicitud de extracción. Si se llama a la rama con esta confirmación featurey 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 conflictos, ahora tiene una rama para la cual puede realizar su solicitud de extracción.

En un segundo paso, ahora deberá decidir qué hacer con su featuresucursal. Si aún no ha publicado sus cambios en esta rama, el mejor procedimiento probablemente sea cambiar la base de esta rama en una nueva rama (y eliminar la última confirmación, si esto no lo hace automáticamente git rebase).

Lars Noschinski avatar Mar 10 '2011 06:03 Lars Noschinski

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

Tuve:

  • proyecto_original
  • forked_project (creado a partir del proyecto original en SHA: 9685770)
  • my_fork (creado a partir de un proyecto bifurcado en SHA: 207e29b)
  • un compromiso en mi bifurcación (SHA: b67627b) que quería enviar nuevamente al proyecto original

Para hacer esto, yo:

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

Los comandos de git eran algo como:

  1. rama git mi-solicitud-de-función 9685770
  2. git checkout mi-solicitud-de-función
  3. git pull https://github.com/original_project/original_project.git
  4. git selección de cereza b67627b
  5. git push origin mi-solicitud-de-función

Luego elegí my-feature-request como la rama de mi solicitud de extracción del proyecto original.

John Naegle avatar Feb 27 '2013 17:02 John Naegle

Esto casi funcionó para mí:

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 creara la rama ascendente en mi repositorio de GitHub para poder hacer relaciones públicas a partir de ella.

hi_tech_lowlife avatar Jul 26 '2015 10:07 hi_tech_lowlife

Ya había realizado 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 , ya que necesito restablecer esta rama al lugar del historial del que quiero diferenciarme.

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

Y seleccione la confirmación a partir de la cual quiero crear una solicitud de extracción aislada.

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

Finalmente empújelo hacia el control remoto.

git push origin isolated-pull

Y tire de la solicitud dat shi.

irbanana avatar Jul 01 '2016 12:07 irbanana