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 cp
ou 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 tar
ou 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.
git
armazena todo o seu histórico, commits, etc. no local - esta é uma propriedade fundamental de um DCVS.
Tecnicamente falando, git
pode 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 orepo
utilitário cria links simbólicos no .git
diretó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
config
arquivo pode conter controles remotos que a outra pessoa pode não se importar. - Sua
logs
pasta 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/exclude
arquivo 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...