2011-08-20 56 views
22

No estoy muy familiarizado con la terminología o las prácticas y los procedimientos de control de versiones.Hacer una copia local de un repositorio remoto de git

Esto es lo que quiero hacer:

  1. Quiero descargar una carpeta de un repositorio Git desde Internet. ¿Es la clonación la forma correcta de hacerlo? ¿NO conservará la clonación los archivos de metadatos innecesarios? ¿Hay alguna manera de hacer una descarga "limpia"?

  2. Quiero configurar un repositorio local que contenga esta carpeta en la que ahora puedo usar el control de versiones. Es decir, cuando realizo una confirmación, mi repositorio local se actualiza.

  3. Finalmente, quiero que este repositorio local esté accesible en la red local, de modo que también pueda descargarlo de cualquier otra máquina en la LAN.

Respuesta

19
  1. La clonación es la correcta, pero descargará todos los directorios de su control remoto Git repo.
    Ver git clone of Git Reference.
  2. El comando clon creará un repositorio con un árbol de trabajo ya desprotegido, y un .git representando su repos completo
  3. Necesita tener al menos una ruta compartida para que otros puedan clonar/tirar/empujar su repositorio.
    Ver git local protocol.

Si no está familiarizado con estas operaciones, te recomendaría que seguir los ejercicios simples propuestas por git immersion.

1

Sí 'git clone' es el camino a seguir. Esto te dará todos los datos y te permitirá hacer commits. Siempre que el nuevo repositorio sea visible en la LAN, otras computadoras también deberían poder clonar.

3

No puede descargar archivos individuales o carpetas de un repositorio git, ya que git rastrea el estado completo de un proyecto como un todo, no solo archivos individuales. Existe la posibilidad de clonar solo un conjunto limitado de revisiones (llamadas clonaciones superficiales) desde un repositorio remoto, pero tales clones están restringidos a un conjunto limitado de operaciones, por ejemplo, no se puede clonar desde un clon superficial, o empujar algo desde tal repo.

Si el tamaño de un gpo repo le molesta, puede git gc para hacer que git reorganice la base de datos de objetos, que a veces puede obtener mejoras de tamaño.

Cuando usted quiere tener una caché local, puede utilizar git clone --mirror $REMOTE_URL para crear un clon, que

Puede clonar nuevos repositorios de trabajo de este repositorio de caché local, y puede ingresar directamente en el repositorio ascendente (necesita git remote add upstream $REMOTE_URL en su copia de trabajo para agregar el enlace al repositorio ascendente, luego puede git push upstream), o puede presionar el repositorio de la memoria caché local, y empujar al repositorio de subida desde allí.

2

Mientras git clone es el derecho para los pasos 1 & 2, es posible que necesite leer algunos de los libros de git, por ejemplo. Progit/Community book, etc. para obtener una idea adecuada del mejor enfoque para el paso 3 y la filosofía git.

Git, como distribuido VCS, se esfuerza por evitar el "repositorio central único" que su "repositorio local sea accesible en la red local" podría sugerir. Puede tener un repositorio simple en la red, que permite muchos para empujar/tirar desde él, pero esto no es lo mismo que tener su repositorio local en la red, con el directorio de trabajo, y solo usted usándolo como si fuera un disco local.

+0

Bien. Quiero trabajar en mi proyecto desde dos máquinas diferentes y quiero que permanezcan sincronizados. Así que debería poner el repositorio en una de las máquinas (digamos primaria), clonarlo en la otra máquina (digamos secundaria), agregar algún enlace "remoto" desde la primaria a la secundaria y luego hacer empujones y jalones para mantenerlos sincronizados. ¿Es esa la manera de hacerlo? – AnkurVj

+0

Si solo eres tú, y trabajas de forma conjunta con las dos máquinas (es decir, nunca estás usando ambas cosas al mismo tiempo), entonces es razonable tener el repositorio en la unidad de red, y de esa manera siempre está sincronizado , no importa desde que inicies sesión. Obviamente, usted incurrirá en retrasos en la red, y debe garantizar las copias de seguridad y su seguridad, pero evita el phaffing con clones/empujes/jalones interminables. –

Cuestiones relacionadas