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

22

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

Estou na situação em que tenho um ambiente de produção (python virtual) em que algum código foi verificado no git. Gostaria de saber se é uma má idéia, 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 o git clone associe algum ID exclusivo à cópia de trabalho que possa causar conflitos se existirem duas cópias de trabalho em que uma foi copiada do sistema de arquivos da outra.

Joe J
fonte
Uau, eu estava nessa situação porque tinha alguns arquivos sob controle de origem e outros não, e tinha permissões de arquivo que precisava preservar. Estou feliz que você fez esta pergunta.
Joe C

Respostas:

21

Está perfeitamente bem.

git armazena toda a sua história, confirmações etc. no local - essa é uma propriedade fundamental de um DCVS.

Tecnicamente falando, gitpode funcionar muito bem com repositórios copiados correndo ao redor em toda parte, porque o ponto inteiro de um DCV são é que ele não tem que saber o que está acontecendo do lado de fora de um determinado repositório , e na verdade não a menos que você diga a ele .

O mesmo princípio se aplica aqui.

new123456
fonte
1
Meu entendimento é que um repositório clonado conterá um link para o pai. O uso de um comando de cópia do SO não criará esse link.
Tony
@ Tony True, mas você pode remover esse link usando git remote remove origin, o que impede o Git de usar o repositório pai como um upstream.
new123456
2

Você deve copiar todo o diretório ativo para qualquer outro lugar no sistema e continuar funcionando normalmente ao usar Git, Hg ou SVN. Não posso comentar sobre outros SCMs.

Darth Android
fonte
0

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

Eu já vi o repoutilitário criar links simbólicos no .gitdiretório Nesse caso, quando você estiver fazendo uma cópia, certifique-se de remover a referência de links simbólicos. Por exemplo:

cp -r -L <source-repo-dir> <destination-repo-dir>
Craig McQueen
fonte
0

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

  • Seu configarquivo pode ter controles remotos que a outra pessoa pode não se importar.
  • Sua logspasta terá referências que talvez você não queira compartilhar. O Git é ótimo em permitir que você faça coisas desagradáveis ​​no 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 no seu reflog, por isso é melhor não compartilhá-lo no IMHO.
  • Seu info/excludearquivo pode estar ignorando alguns arquivos que apenas você deseja ignorar.
  • Você também pode ter ganchos, galhos e várias outras coisas pessoais, e você prefere não compartilhar ...
whoan
fonte