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
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ésgit checkout
y finalmentegit 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