¿Cómo se actualiza una bifurcación de repositorio de GitHub en la interfaz web?

58

Tengo un repositorio de Github que bifurqué de otro proyecto hace varios meses. Han pasado varios meses y el repositorio principal original ha cambiado. Me gustaría actualizar mi repositorio para reflejar esos cambios. ¿Es esto posible en la interfaz web de Github? ¿O solo necesito eliminar el repositorio y volver a bifurcarlo?

Jake Wilson
fuente
1
github.com/isaacs/github/issues/438
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

43

Puede intentar y revertir cómo suceden las solicitudes de extracción.

  1. Ve a tu tenedor
  2. Emitir una solicitud de extracción

    De forma predeterminada, este será su tenedor a la derecha ( repositorio principal ) solicitando empujar sus confirmaciones y cambios al repositorio original ( repositorio base ) a la izquierda.

  3. Haga clic en el menú desplegable tanto para el repositorio base como para el repositorio principal y seleccione los repositorios de cada uno.

    Desea que el suyo se enumere a la izquierda (aceptando cambios) mientras que el repositorio original está a la derecha (el que tiene cambios para empujar). Como se ilustra en esta imagen:

    tenedor hecho sobre sí mismo

  4. Enviar la solicitud de extracción

    Si su bifurcación no ha tenido ningún cambio, debería poder aceptar automáticamente la fusión.

Si su código de alguna manera entra en conflicto o no está lo suficientemente limpio, entonces esto no funcionará para actualizarse a través de la interfaz web de GitHub y deberá tomar el código y resolver cualquier conflicto en su máquina antes de volver a su bifurcación.

Ocho días de malestar
fuente
3
Esto todavía funciona, pero sí, no es lo ideal. Definitivamente es solo un truco. No es la forma correcta de hacerlo.
Jake Wilson
3
Confirmado una mala idea. Esto contamina el repositorio de una manera que Github le sugiere que solicite una solicitud vacía para el proyecto original. Consulte, por ejemplo, github.com/dthommes/RoboSpring/pull/3 : una vez que contribuí a ello, me sincronicé y ahora Github quiere que empuje un compromiso "Sincronizando mi tenedor" etiquetado como "Solicitud de extracción de fusión # 1 de dthommes / master ... "
usr-local-ΕΨΗΕΛΩΝ
1
No creo que esto funcione más. Aunque parece un poco extraño, no hay una manera simple de hacer esto.
Toby Allen
1
Simplemente lo probé, y no pareció funcionar de inmediato ; al cambiar uno de los tenedores, se abrió inmediatamente una página de "Comparación de cambios". Pero hacer clic en el enlace "comparar entre horquillas" permitió cambiar la otra horquilla de todos modos. Tal vez podría agregar algo a este efecto a su respuesta.
Peter Mortensen
44
GitHub debería agregar un botón "Sync Fork" para que no tenga que crear un millón de RP. Por ahora estoy usando la línea de comando para actualizar mis horquillas
Suici Doga
23

Será más fácil

  1. Vaya al Repo Forked (el suyo) y simplemente haga clic en el botón - "Nueva solicitud de extracción".
  2. En la página que se abre, hay un pequeño enlace a "cambio de base" en el mensaje debajo de los menús desplegables. Haz clic en el enlace.
  3. Ahora conducirá automáticamente a su repositorio original. Haga clic en el botón Crear solicitud de extracción y escriba un mensaje de confirmación.
  4. Ahora lo llevará a su repositorio bifurcado automáticamente, haga clic en Solicitud de extracción de combinación y confirme la combinación para finalizar.
Youngjae
fuente
Deberías aclarar cuáles son esos botones verdes y sería una gran respuesta ...
Rodrigo Graça
Esta es definitivamente la mejor respuesta a partir del 4/2016.
dr01
77
El problema con este método es que agrega un compromiso adicional a su rama, por lo que no está realmente sincronizado con el repositorio ascendente.
Mottie
@Mottie ¿Hay alguna manera de que sepamos si nuestra bifurcación está detrás de la última versión ascendente, y vemos una diferencia de los cambios, sin realmente sacarlos?
Sujay Phadke
1
@SujayPhadke En su página principal de repositorios bifurcados debajo del botón de selección de rama habrá un mensaje "Esta rama es xx commits detrás de xxxx: master". En cuanto a ver la diferencia, hay un botón "comparar" en la misma fila que el mensaje; o puede ir a este enlace:https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
Mottie
3

Cómo actualizar un repositorio de GitHub bifurcado con cambios desde el repositorio ascendente remoto


Instrucciones de la Ayuda de GitHub:

Configurar una bifurcación remota

Sincronizando un tenedor


Instrucciones de configuración / operación:

Abra Git Bash (Windows) o Linux / Mac Terminal

Si aún no ha clonado su repositorio, debe cambiar al directorio de trabajo de su carpeta de desarrollo y clonarlo a su estación de trabajo.

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git

Cambie al directorio de trabajo de su repositorio bifurcado en su estación de trabajo.

$ cd /user/development/my_forked_repo/

Enumere el repositorio remoto configurado actual para su bifurcación.

 $ git remote -v

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

Especifique un nuevo repositorio remoto ascendente que se sincronizará con la bifurcación.

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Verifique el nuevo repositorio ascendente que ha especificado para su bifurcación.

$ git remote -v

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Obtenga las ramas y sus respectivas confirmaciones del repositorio ascendente. Los commits a master se almacenarán en una sucursal local, upstream / master.

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

Echa un vistazo a la sucursal maestra local de tu fork.

$ git checkout master

Switched to branch 'master'

Combine los cambios de upstream / master en su rama master local. Esto sincroniza la rama maestra de su fork con el repositorio ascendente, sin perder sus cambios locales.

$ git merge upstream/master

Updating a422352..5fdff0f
Fast-forward
README                    |    9 -------
README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

Si su sucursal local no tenía confirmaciones únicas, Git realizará un "avance rápido":

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Ahora tendrá que empujar los commits a su bifurcación.

$ git push

Si aún no está autenticado, le pedirá su nombre de usuario / contraseña de github. Una vez autenticado, los nuevos commits deben ser empujados a su fork y visibles en github.

ode2k
fuente
55
Gracias por su respuesta detallada, sin embargo, la esperanza era una solución utilizando la interfaz web.
Toby Allen