Abrí una solicitud de extracción para el repositorio de rieles en github usando el botón Fork & Edit this file file.
Ahora, después de recibir comentarios sobre mi PR, quería agregar más confirmaciones. así que esto es lo que terminé haciendo
$ git clone [email protected]:gaurish/rails.git #my forked repo
$ git rebase -i 785a2e5 #commit hash of my commit using which PR was opened
$ git checkout patch-3 #branch name I had to send my commits under to be shown in that PR
$ git commit -am "Changes done as per feedback"
$ git push origin patch-3
Esto funcionó bien, pero parece un flujo de trabajo bastante complejo. ¿Quizás me equivoque, algo anda mal aquí?
mi pregunta es: ¿Estoy haciendo esto de la manera correcta? si no es así, ¿cuál es la forma correcta de hacerlo?
git
github
pull-request
Mente curiosa
fuente
fuente
Respuestas:
Como está utilizando las herramientas de GitHub y solo está cambiando un archivo, también puede buscar el archivo en GitHub, seleccionar la rama adecuada en la esquina superior izquierda debajo del menú desplegable "árbol:" (
patch-3
en su caso), y ahora elegir "Editar Este archivo". Ahora sus cambios se confirmarán en esta rama y aparecerán en su solicitud de extracciónfuente
Recientemente escribí en un blog sobre este tema:
¿Cómo mantenemos actualizada esta rama de funciones? Fusionar las confirmaciones ascendentes más recientes es fácil, pero desea evitar la creación de una confirmación de fusión, ya que eso no se apreciará cuando se empuje a las versiones ascendentes: entonces está re-confirmando efectivamente los cambios ascendentes, y esas confirmaciones ascendentes obtendrán un nuevo hash ( cuando tengan un nuevo padre). Esto es especialmente importante, ya que esas confirmaciones fusionadas se reflejarían en su solicitud de extracción de GitHub cuando envíe esas actualizaciones a su rama de funciones personal de GitHub (incluso si lo hace después de emitir la solicitud de extracción).
Es por eso que necesitamos reajustar en lugar de fusionar:
Tanto la opción de rebase como el comando de rebase de git mantendrán tu árbol limpio y evitarán que se combinen confirmaciones. Pero tenga en cuenta que esas son sus primeras confirmaciones (con las que emitió su primera solicitud de extracción) que se están volviendo a basar y que ahora tienen un nuevo hash de confirmación, que es diferente de los hash originales que todavía están en su rama remota de repositorio de github. .
Ahora, enviar esas actualizaciones a su rama de características de GitHub personal fallará aquí, ya que ambas ramas difieren: el árbol de la rama local y el árbol de la rama remota están "desincronizados", debido a esos diferentes hashes de confirmación. Git te dirá que lo hagas primero
git pull --rebase
, luego presiona nuevamente, pero esto no será un simple avance rápido, ya que tu historial fue reescrito. ¡No hagas eso!El problema aquí es que volvería a buscar sus primeras confirmaciones modificadas como estaban originalmente, y esas se fusionarán en la parte superior de su rama local. Debido al estado de desincronización, esta extracción no se aplica limpiamente. Obtendrá un historial roto donde sus confirmaciones aparecen dos veces. Cuando empuja todo esto a su rama de características de GitHub, esos cambios se reflejarán en la solicitud de extracción original, que se volverá muy, muy fea.
AFAIK, en realidad no hay una solución totalmente limpia para esto. La mejor solución que encontré es forzar el empuje de su sucursal local a su sucursal de GitHub (en realidad, forzando una actualización que no sea de avance rápido):
Según git-push (1):
Así que no tire, simplemente empuje con fuerza así:
o:
Esto en realidad sobrescribirá claramente su sucursal remota, con todo en su sucursal local. Las confirmaciones que están en la secuencia remota (y causaron la falla) permanecerán allí, pero serán confirmaciones colgantes, que eventualmente serán eliminadas por git-gc (1). No es gran cosa.
Como dije, esta es AFAICS la solución más limpia. La desventaja de esto es que su RP se actualizará con las confirmaciones más recientes, que tendrán una fecha posterior y podrían aparecer desincronizadas en el historial de comentarios del RP. No es un gran problema, pero podría resultar confuso.
fuente
También puede crear una nueva solicitud de extracción que esté vinculada en
master
lugar de unaabc1234
revisión específica .De esa manera, cualquier nueva confirmación / envío a su repositorio se agregará a la solicitud de extracción.
fuente
Sí, estás haciendo mucho más trabajo del necesario. Simplemente haga una confirmación adicional y luego fuerce la presión. Verá la confirmación original y luego una nueva cuando actualice github en su navegador.
fuente