¿Copiando la rama local de git entre máquinas?

4 minutos de lectura

avatar de usuario de gct
gct

Bien, estoy rastreando un repositorio remoto en dos máquinas para que ambas tengan la rama maestra. También hice una sucursal local en mi computadora portátil llamada desarrollo. ¿Hay alguna forma de copiar esa sucursal local en mi computadora de escritorio? Usaría mi computadora portátil, pero por alguna razón tengo problemas con gdb y emacs…

Editar: Esto funcionó para mí

git remote add laptop [username]@hostname:/path/to/repo
git fetch laptop
git checkout --track -b development laptop/development
git pull

Supongamos que tiene tanto el repositorio en la máquina ‘escritorio’ como el repositorio en la máquina ‘portátil’ configurados de tal manera que puede buscar en ‘escritorio’ desde ‘portátil’ y viceversa (por ejemplo, a través de SSH, o a través de git:// protocolo, es decir, a través de git-daemon, o quizás a través de HTTP simple).

Tanto la máquina ‘de escritorio’ como la ‘portátil’ tienen una rama ‘maestra’ y, además, la máquina ‘portátil’ tiene una rama de ‘desarrollo’.

Dejar primero configurar remoto atajo, y sucursales de seguimiento remoto usando git remoto:

desktop$ git remote add laptop user@laptop:/path/to/repo

Esto configuraría ramas remotas llamadas ‘laptop’ y de seguimiento remoto: ‘laptop/master’ (o para ser más exactos ‘refs/remotes/laptop/master’) que sigue a la rama ‘master’ en ‘laptop’ y ‘laptop /desarrollo’ que sigue a la rama ‘desarrollo’ en ‘portátil’.

Entonces necesitas crear sucursal local ‘desarrollo’ en ‘escritorio’, que seguiría (rastrear) la rama de seguimiento remoto ‘portátil/desarrollo’ (ya que no puede desarrollar en ramas de seguimiento remoto):

desktop$ git checkout -b development --track laptop/development

o simplemente (con git moderno)

desktop$ git checkout --track laptop/development

Ver git-branch página de manual para más detalles.

Esta configuración permite usar simplemente “git pull” cuando está en la rama ‘desarrollo’ mientras está en ‘escritorio’, y git buscará automáticamente todos los cambios del repositorio en ‘laptop’ en ‘laptop/master’ y ‘laptop/desarrollo’ seguimiento remoto sucursales, y luego intente fusionar ‘laptop/desarrollo’ en ‘desarrollo’ (rama actual), lo que generalmente resultaría en avance rápidoes decir, simplemente moviendo la rama ‘desarrollo’.

Luego puede crear una configuración similar en ‘laptop’ (aunque configurar el ‘desarrollo’ de la rama existente en ‘laptop’ para rastrear ‘escritorio/desarrollo’ puede requerir editar el archivo de configuración directamente o a través de “git config”).

  • ¿No es ‘–track’ innecesario? Los documentos dicen que “este comportamiento es el predeterminado cuando el punto de inicio es una rama remota”.

    – cmcginty

    14 de septiembre de 2009 a las 19:36

  • Probablemente sea innecesario, al menos en el primer caso (con ‘-b’ explícito para iniciar una nueva rama), dependiendo de branch.autosetupmerge (predeterminado en verdadero).

    – Jakub Narębski

    14 de septiembre de 2009 a las 20:12

  • Entonces, ¿alguien puede explicar qué se debe hacer en la ‘computadora portátil’ para habilitar las extracciones recíprocas de ‘escritorio’ a ‘computadora portátil’? ¿Qué archivo de configuración necesito editar o cómo uso git config para lograr esto?

    – dala

    26 de enero de 2011 a las 11:10

Avatar de usuario de Adam Wright
adam wright

¿No puedes simplemente sacar la rama remota de tu computadora portátil? Git extraerá http, ssh, muchos protocolos. Mi sintaxis de git está bastante oxidada, pero algo como…

Editar: al buscar en la memoria y los manuales, es posible que deba agregar inicialmente el nuevo control remoto con

git remote add ssh://remotestuff/

entonces tú puedes

git checkout --track -b localBranchName remote/remoteBranch

para rastrear la sucursal.

  • Obtengo “fatal: git checkout: actualizar las rutas es incompatible con cambiar de rama/forzar

    – gct

    14 de septiembre de 2009 a las 16:18

  • Más bien espero que alguien venga con una mejor respuesta ramificada que esta. Considero que la sintaxis y los manuales de git son en gran medida inescrutables, lo que ha generado una gran industria de “tutoriales” de git que difieren ligeramente.

    – Adán Wright

    14 de septiembre de 2009 a las 16:18

  • @gct: el error “la actualización de rutas es incompatible…” generalmente significa que tiene cambios locales en su rama actual. Esos cambios deben eliminarse antes de verificar el nuevo repositorio. Si necesita conservarlos, puede git stash después git checkout y finalmente git stash apply.

    – Tim Henigan

    14 de septiembre de 2009 a las 16:26

Puede copiar el repositorio en una memoria USB, conectarlo a la segunda computadora portátil/PC, cd al repositorio y hacer:

git remote add usbstick path/to/repo/in/usbstick
git fetch usbstick
git branch branch_name usbstick/branch_name

¿Ha sido útil esta solución?