git agrega una twig de seguimiento remoto al repository desnudo

  1. Tengo un repository desnudo que fue clonado de git.drupal.org.
  2. He clonado de este repository desnudo a varios sitios web diferentes.
  3. De cada uno de estos, presiono una twig específica del sitio en el repository desnudo.

Por ejemplo, si tengo foo.org y bar.org, entonces mi repository simple tiene twigs de drupal + una llamada foo y una llamada barra.

La idea era que podía aprovechar al máximo los enlaces duros de git para ahorrar espacio en disco con clones locales. Pensé que mantendría la recuperación de reportes simple desde git.drupal.org, y pasaría los cambios a mis copys locales, foo y barra. Luego, cuando llegara una actualización, sería fácil.

bare-repo$ git fetch >/dev/null ; git branch -a * 7.x foo bar remotes/origin/7.x remotes/origin/8.x 

foo y bar comenzaron en la twig 7.x, pero me gustaría actualizarlos a 7.8, por ejemplo, mediante git rebase 7.8 pero esto falla:

 fatal: Needed a single revision invalid upstream 7.8 

foo y bar no pueden "ver" los controles remotos del repository. ¿Que puedo hacer?

2 puntos, como se explica en " git rebase fatal: se necesitaba una sola revisión ":

  • necesita especificar el nombre de una twig, que en su caso sería origin/7.8 , no 7.8 :
    git rebase origen / 7.8

Deberia trabajar.

  • No puede volver a establecer una base en una bifurcación que no contenga la confirmación en la que se creó originalmente su bifurcación actual. (así que asegúrese de que sea el caso de su repository)

El OP artfulrobot informa:

 git rebase origin/7.8 fatal: Needed a single revision invalid upstream origin/7.8 

A lo que respondí:

si 7.8 no está presente en el origen como una bifurcación, se espera este post de error.
Tal vez 7.8 es una label en el repository de ' origin '.
En este caso, primero debe search dichas tags explícitamente :

 git fetch --tags origin 

Entonces la rebase debería funcionar

necesitas una carpeta de trabajo para rebase. Entonces, debe clonar este repository y luego hacer lo que necesita. Después de eso, empuja las twigs modificadas de vuelta al repository desnudo.

Alternativamente, puede especificar un directory de trabajo git --work-tree=../somedir rebase 7.8 . Desafortunadamente las opciones worktree y git dir para el command git no están completamente implementadas para todos los commands. La primera opción es la mejor.

Rebase necesita un directory de trabajo porque necesita darle control cuando encuentra un conflicto. A continuación, puede corregir el conflicto y emitir un git rebase --continue command para que aplique el rest de las confirmaciones en la nueva base.

Espero que esto ayude.