¿Está bien copiar (no clonar) un repositorio git usando comandos básicos de Unix?


22

Soy bastante nuevo en el uso de git y me preguntaba si está bien copiar un repositorio de Git con comandos comunes de UNIX (como cpo tar/ untag), en lugar de hacerlo git clone.

Estoy en una situación en la que tengo un entorno de producción (virtual de Python) en el que se desprotegió algún código en git. Me pregunto si es una mala idea, desde una perspectiva git, copiar todo el entorno usando una taro algo. Este enfoque sería conveniente para hacer una copia rápida de una base de código / entorno.

Mi preocupación es que quizás git clone asocie una identificación única con la copia de trabajo que podría causar conflictos si existen dos copias de trabajo donde una fue copiada del sistema de archivos de la otra.


Wow, estaba en esta situación porque tenía algunos archivos bajo control de origen y otros no, y tenía permisos de archivos que necesitaba preservar. Me alegra que hayas hecho esta pregunta.
Joe C

Respuestas:


21

Está perfectamente bien.

git almacena toda su historia, confirmaciones, etc. en el sitio; esta es una propiedad fundamental de un DCVS.

Técnicamente hablando, gitpuede funcionar bien con repositorios copiados que se ejecutan en todas partes, porque el objetivo de un DCVS es que no tiene que saber qué está sucediendo fuera de un repositorio determinado , y de hecho no lo sabe a menos que usted lo diga .

El mismo principio se aplica aquí.


1
Entiendo que un repositorio clonado contendrá un enlace de regreso al padre. El uso de un comando de copia del sistema operativo no creará ese enlace.
Tony

@Tony True, pero puede eliminar ese enlace usando git remote remove origin, lo que impide que Git use el repositorio principal como un flujo ascendente.
nuevo123456

2

Debería poder copiar todo el directorio de trabajo en cualquier otro lugar de su sistema y hacer que continúe funcionando normalmente cuando use Git, Hg o SVN. No puedo comentar sobre otros SCM.


0

Este es un caso de uso más inusual, pero ...

He visto la repoutilidad hacer enlaces simbólicos en el .gitdirectorio. En ese caso, cuando esté haciendo una copia, querrá asegurarse de desreferenciar los enlaces simbólicos. P.ej:

cp -r -L <source-repo-dir> <destination-repo-dir>

0

Está bien, pero si está a punto de compartir su repositorio con otra persona, tenga en cuenta lo siguiente :

  • Es posible que su configarchivo tenga controles remotos que a la otra persona no le importe.
  • Su logscarpeta tendrá referencias que quizás no desee compartir. Git es excelente para permitirte hacer cosas desagradables en tu computadora hasta que te sientas cómodo con el resultado final, y luego empujarlo al control remoto para (ocasionalmente) compartirlo. Parte de esa desagradable historia podría estar en su reflog, por lo que es mejor no compartirla en mi humilde opinión.
  • Su info/excludearchivo puede estar ignorando algunos archivos sólo se quieren ignorar.
  • También puede tener ganchos, ramas y un montón de otras cosas que son personales y prefiere no compartir ...
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.