Posso copiar (não clonar) um repositório git usando comandos básicos do Unix?

Posso copiar (não clonar) um repositório git usando comandos básicos do Unix?

Sou muito novo no uso do git e queria saber se não há problema em copiar um repositório Git com comandos UNIX comuns (como cpou tar/ untag), em vez de git clone.

Estou na situação em que tenho um ambiente de produção (python virtual) que contém algum código verificado no git. Estou me perguntando se é uma má ideia, do ponto de vista do git, copiar todo o ambiente usando um tarou algo assim. Essa abordagem seria conveniente para fazer uma cópia rápida de uma base de código/ambiente.

Minha preocupação é que talvez git clone associe algum ID exclusivo à cópia de trabalho que possa causar conflitos se existirem duas cópias de trabalho onde uma foi copiada do outro pelo sistema de arquivos.

Responder1

Está perfeitamente bem.

gitarmazena todo o seu histórico, commits, etc. no local - esta é uma propriedade fundamental de um DCVS.

Tecnicamente falando, gitpode funcionar muito bem com repositórios copiados em todos os lugares, porque o objetivo de um DCVS é ​​quenão precisa saber o que está acontecendo fora de qualquer repositório,e na verdade não acontece, a menos que você conte.

O mesmo princípio se aplica aqui.

Responder2

Você deve ser capaz de copiar todo o diretório de trabalho para qualquer outro lugar do sistema e fazer com que ele continue funcionando normalmente ao usar Git, Hg ou SVN. Não posso comentar sobre outros SCMs.

Responder3

Este é um caso de uso mais incomum, mas...

Eu vi orepoutilitário cria links simbólicos no .gitdiretório. Nesse caso, ao fazer uma cópia, certifique-se de desreferenciar links simbólicos. Por exemplo:

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

Responder4

Tudo bem, mas se você estiver prestes a compartilhar seu repositório com outra pessoa, considere o seguinte:

  • Seu configarquivo pode conter controles remotos que a outra pessoa pode não se importar.
  • Sua logspasta terá referências que você talvez não queira compartilhar. O Git é ótimo para permitir que você faça coisas desagradáveis ​​em seu computador até se sentir confortável com o resultado final e, em seguida, empurre-o para o controle remoto para (ocasionalmente) compartilhá-lo. Parte dessa história desagradável pode estar em seu reflog, então é melhor não compartilhá-la, IMHO.
  • Seu info/excludearquivo pode estar ignorando apenas alguns arquivosvocêquero ignorar.
  • Você também pode ter ganchos, galhos e um monte de outras coisas que são pessoais e você prefere não compartilhar...

informação relacionada