2011-05-01 9 views
44

Tengo un proyecto con un simple repositorio git local, y quiero mover este proyecto (carpetas, etc.) a otra computadora y trabajar desde allí a partir de ahora. No quiero que quede nada en la máquina antigua (excepto, por supuesto, mis otros proyectos de git). Quiero que sea como si hubiera estado trabajando desde la nueva máquina todo el tiempo.¿Moviendo un git repo a una segunda computadora?

¿Puedo simplemente mover todos los archivos a esa computadora, o habrá un problema con las teclas? ¿Debería tener la misma llave en dos máquinas? Si simplemente no se pueden mover todas las carpetas, ¿qué debo hacer? Quiero evitar la molestia de configurar y aprender a usar un servidor, ya que esto parece complicado y no quiero alterar mi flujo de trabajo.

Respuesta

52

Para su caso, la mejor manera de hacerlo es copiar la carpeta (copiar, scp, cp, robocopy, cualquiera) en la nueva computadora y eliminar la carpeta anterior.

Estoy completamente en desacuerdo con @Pablo Santa Cruz que la clonación es el paradigma de lo que estás haciendo. No, no es. Está moviendo un repositorio a una nueva computadora.

Por qué no me gusta clon para este propósito:

  • Se crea ramas de seguimiento a distancia para cada rama en el repositorio clonado. Te estás mudando, y el antiguo repositorio está extinto.
  • Cualquier rama remota y otras referencias se ignoran por completo.
  • ¡Usted no obtiene sus ganchos si tiene alguno y puede olvidar que los tenía!
  • No se puede "perder" commits etc. usando git reflog u otros medios. Puede que no sea un gran problema, especialmente si el repositorio actuó como servidor, pero algo a tener en cuenta.

Si busca formas de hacer una copia de seguridad de un repositorio de git, la copia de git no estaría en las primeras respuestas. ¡Entonces no debería usarse para mover un repositorio!También siento que sólo un git clone no puede haber una respuesta adecuada porque git clone tiene la opción --mirror, que conserva el repositorio, lo que significa que un acuerdo de recompra git clone es diferente de git clone --mirror repo (aparte de ser descubierto, las diferencias son en su mayoría los que he mencionado anteriormente) Haría una copia porque yo lo que obtengo con el repositorio copiado - el mismo repo!

Al considerar git clone: ​​

  1. Es más rápido como Git hace algo de optimización durante la clonación
  2. Es posible que tenga diferentes versiones Git en la nueva máquina y una copia podría hacer que el repositorio inutilizable en el otro versión (no muy común hoy en día). Pero en realidad esto puede ser otro profesional para la copia, ya que esto le informaría que la nueva computadora tiene una versión de git diferente.
+10

Todos los demás lo hacen de esta manera demasiado complicado. Tome su directorio completo del proyecto y cópielo a la nueva máquina. Hecho. – kubi

+0

Suena bien. Recuerdo haber tenido que generar una clave o algo así. ¿Funcionará todo eso correctamente si solo lo copio y borro el repo viejo? –

+0

He leído que puede conservar ramas remotas usando algo como '\ *: \ *', pero no estoy seguro de la sintaxis exacta y eso es una perra de una palabra clave de google: @manojlds, ¿sabe algo al respecto? podrías elaborar? Siento que, si se preservaran las ramas, eso resolvería la mayoría de los problemas importantes (excepto los ganchos) –

-1

En lugar de copiar, le recomendaría clone el repositorio. La clonación es el paradigma correcto para lo que estás tratando de lograr. El proyecto clonado también contendrá todos los metadatos e información git.

En la máquina de destino:

$ git clone git://your-repo/proj proj 

En lugar de utilizar git:// también se podría utilizar ssh:// o http:// protocolos para acceder al repositorio. Consulte el manual git para obtener más información.

+0

Commit & push the repo en la computadora 1, clonar en la computadora 2. Commit push en la computadora 2. Pull en la computadora 1. RTM. – RyanScottLewis

+1

@coolryguy: Esto supone que hay un tercer repositorio "central". – KingCrunch

+0

No estaba claro, no estoy copiando, me estoy mudando. No quiero que ocupe espacio en la computadora original. ¿Debería hacer esto y luego eliminar la carpeta anterior? –

-1

Como cada clon también es un repositorio, solo clone el primero en la segunda computadora.

2

Sí, es suficiente copiar los datos a la otra máquina. Usar git clone es casi lo mismo, pero configurará la computadora desde la que estás clonando como el origen remoto, que podría no ser lo que deseas.

+0

'git remote rm origin' – KingCrunch

+0

Correcto, eso no es lo que quiero. Quiero mover el proyecto sin dejar rastros en la máquina original. ¿Pero simplemente moverlo arruinará mis llaves? ¿Tendré que configurar nuevos en la nueva máquina? –