Cómo eliminar una rama eliminada de otro repositorio

Tengo un proyecto alojado en GitHub que alguien ha diversificado. En su horquilla, crearon una nueva rama "foo" e hicieron algunos cambios. ¿Cómo puedo poner "foo" en una nueva rama, también llamada "foo" en mi repositorio?

Entiendo que pueden enviar una solicitud de transferencia, pero me gustaría iniciar este proceso yo mismo.

Supongamos lo siguiente:

  • Desde que diversificaron mi proyecto, nuestros dos acuerdos de intercambio tienen la misma "historia"
  • Aunque GitHub muestra que su proyecto ha sido bifurcado por mí, mi repositorio local no tiene enlaces a este proyecto. ¿Necesito agregarlos como control remoto?
  • Todavía no tengo una rama llamada "foo". No sé si necesito crear manualmente esto primero o qué.
  • Definitivamente quiero que esto sea llevado a un hilo separado, y no a mi maestro.

Espero que esto tenga sentido.

206
04 мая '11 в 17:14 2011-05-04 17:14 Colin O'Dell preguntó el 4 de mayo de 2011 a las 5:14 pm 2011-05-04 17:14
@ 6 respuestas
 git remote add coworker git://path/to/coworkers/repo.git git fetch coworker git checkout --track coworker/foo 

Esto instalará la sucursal local de foo , haciendo un seguimiento de la sucursal remota de coworker/foo . Por lo tanto, cuando su empleado ha realizado algunos cambios, puede sacarlos fácilmente:

 git checkout foo git pull 

Responder a los comentarios:

Genial :) ¿Y si quiero hacer mis propios cambios en este hilo, si creo una segunda "barra" de rama local desde "foo" y trabajo allí en lugar de hacerlo en mi "foo"?

No es necesario crear una nueva rama, incluso si lo recomiendo. También puede pasar foo directamente y pedirle a su empleado que saque su sucursal. Pero esta rama ya existe, y tu rama foo debe estar configurada como una rama en ella:

 git branch --set-upstream foo colin/foo 

Suponiendo que colin es su repositorio (el repositorio remoto de sus colegas), definido de manera similar:

 git remote add colin git://path/to/colins/repo.git 
268
04 мая '11 в 17:17 2011-05-04 17:17 la respuesta se da ralphtheninja 04 May '11 a 17:17 2011-05-04 17:17

No, no es necesario agregarlos como control remoto. Sería engorroso y doloroso hacer todo el tiempo.

Captura tus compromisos:

65
10 марта '17 в 13:40 2017-03-10 13:40 la respuesta se da antak 10 de marzo de 17 a 13:40 2017-03-10 13:40

Si la respuesta es antaka:

 git fetch git@github.com:<THEIR USERNAME>/<REPO>.git <THEIR BRANCH>:<OUR NAME FOR BRANCH> 

te da:

 Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

Luego (siguiendo los consejos de Przemek D) utilice

 git fetch https://github.com/<THEIR USERNAME>/<REPO>.git <THEIR BRANCH>:<OUR NAME FOR BRANCH> 
5
04 сент. La respuesta se da Pedro 04 sep. 2017-09-04 11:05 '17 a las 11:05 2017-09-04 11:05

Si un repositorio bifurcado está protegido y no puede ingresarlo directamente, y su objetivo es hacer cambios en su foo, debe insertar su rama foo en su repo de la siguiente manera:

 git remote add protected_repo https://github.com/theirusername/their_repo.git git fetch protected_repo git checkout --no-track protected_repo/foo 

Ahora tienes una copia local de foo, sin ningún flujo ascendente asociado. Puede confirmar los cambios (o no) y luego enviar su archivo a su repositorio remoto.

 git push --set-upstream origin foo 

Ahora foo está en tu repositorio en GitHub, y tu foo local lo rastrea. Si continúan realizando cambios en foo, puedes obtenerlos e inyectarlos en tu foo.

 git checkout foo git fetch protected_repo git merge protected_repo/foo 
1
16 окт. La respuesta la da J Smith el 16 de octubre. 2018-10-16 08:56 '18 a las 8:56, 2018-10-16 08:56

A continuación se muestra una buena solución práctica que funciona con GitHub para verificar la sucursal de relaciones públicas desde otra bifurcación personalizada. Debe conocer el ID de solicitud de eliminación (que se muestra en GitHub junto con el encabezado de PR).

Ejemplo:

Arreglando su código inseguro # 8
Alice quiere unir 1 commit en your_repo:master from her_repo:branch

 git checkout -b <branch> git pull origin pull/8/head 

Reemplace su consola si es diferente de origin .
Reemplace 8 ID de solicitud de recepción correcta.

0
11 нояб. La respuesta es dada por Subfuzion el 11 de noviembre. 2018-11-11 08:51 '18 a las 8:51 am 2018-11-11 08:51

GitHub tiene una nueva opción con respecto a las respuestas anteriores, solo copie / pegue las líneas de comando desde PR:

  1. Desplázate hasta PR para ver el botón Merge o Squash and merge .
  2. Haga clic en el enlace a la derecha: view command line instructions
  3. Haga clic en el icono de copia a la derecha del paso 1
  4. Insertar comandos en su terminal
0
15 янв. Respuesta dada por Robert Monfera el 15 de enero. 2019-01-15 16:00 '19 a las 4 pm 2019-01-15 16:00

Otras preguntas sobre etiquetas o Haz una pregunta