Nessa dica vou mostar algo que parece simples (no Git), mas é bem complicadinho! =) Pois, na verdade, eu criei um script Shell Script que você pode rodar como comando na sua $PATH
.
Também vou disponibilizar uma solução a mais , mas não do Git e sim do SVN , que pra ser sincero, nem precisaria de uma função Shell, mas pra ficar ainda mais fácil também vou mostrar.
Pra você entender esse artigo você deve possuir conhecimentos básicos de Git e GitHub ou qualquer outro repositório Git.
Para isso recomendo você conhecer nossa paǵina específica para iniciantes em Git e GitHub: https://terminalroot.com.br/git . Lá você vai encontrar dicas em textos e vídeos, inclusive um mini-curso de Git e GitHub para Iniciantes .
Em resumo, clonar um repositório significa: copiar todos os arquivos dele para seu computador.
git clone é um utilitário de linha de comando Git que é usado para direcionar um repositório existente e criar um clone ou cópia do repositório de destino. É muito simples para clonar repositórios Git: GitHub , GitLab , BitBucket e entre outros.
O comando resume em:
Por exemplo, eu tenho um repositório que é https://github.com/terroo/fonts , supondo que você deseja clonar esse repositório, o comando seria:
Você ainda pode clonar já renomeando e/ou com o mesmo nome em um novo caminho do seu computador, exemplo:
Ou até mesmo clonar com o mesmo nome em outro caminho:
Observação: Se você informar um novo caminho, obrigatóriamente você precisa informar um nome , seja ele o mesmo nome ou um novo. Se você fizer assim, sem informar um nome, ele informará um erro:
fatal: destination path 'Downloads' already exists and is not an empty directory.
.
Além disso existem diversos parâmetros que você pode usar, aqui veremos alguns, mas você pode obter a documentação completa no site oficial do Git mais especificamente na URL: https://git-scm.com/docs/git-clone .
Esse repositório que eu usei como exemplo foi totalmente mal projetado, lá você não vai encontrar somente fonts , mas também: Wallpapers, arquivos de configuração para WM e entre outras coisas . E por conta disso, às vezes eu quero copiar somente um sub-diretório dentro dele .
Por exemplo, nesse repositório existe uma pasta/diretório de nome files e vamos supôr que eu queira copiar/clonar somente esse diretório/sub-diretório , se eu fizer isso: não dará certo, o Git não permite isso, haverá falha no comando clone:git clone https://github.com/terroo/fonts/files
E é bem inconveniente você clonar todo o repositório (que por sinal é bem grande) que vai demorar bastante, somente para usar os arquivos de um diretório específico do repositório.
Até a versão 2.18 do Git isso não era possível, mas a partir da versão 2.19 já é possível, logo verifique a versão do seu Git antes de prosseguir, use o comando git --version
para saber a versão. Se for igual ou maior de 2.19 é possível clonar somente um diretório específico.
Para clonar esse diretório (files, dentro do repositório) vamos usar os seguintes comandos, explicação nos comentários (#):
Para cada comando , se você não entendeu bem, recomendo você dar uma olhada por cima no manual, por exemplo: man git remote
.
Se você acha muito processo rodar todos esse comandos, você pode usar um script em Shell, como eu havia dito para ficar automático e rodar somente um comando, veja o script clicando no link abaixo:
Se quiser que vire um comando para usar em qualquer diretório que você estiver, salve com o nome: git-dir
(ou o nome que você deseja) e mova pra onde desejar, exemplo:
E pra usar basta rodar git-dir
em qualquer lugar que você estiver que o mesmo já mostrará o help exibindo as opções.
Pode-se notar que quando usamos o Git pra isso, esse clone , apesar de ser de um subdiretório , ainda assim vai ser muito lento. Para isso existe uma solução bem mais rápida que é o usando o SVN que é uma alternativa ao Git da Apache Software Foundation .
A diferença do SVN para o Git, na minha opinião, se resume nessas duas imagens abaixo, ou seja, não existe melhor e nem pior, existe aquele que atende suas necessidades específicas para cada caso.
O Apache Subversion (também conhecido por SVN) é um sistema de controle de versão desenhado especificamente para ser um substituto moderno do CVS, que se considera ter algumas limitações. O Subversion utiliza banco de dados Berkeley BD.
Antes de tudo , você precisa possuir ele instalado no seu sistema. Para isso use o gerenciador de pacotes da sua distro:
E pra clonar basta usar o parâmetro export
com o fake-dir : trunk
entre o repositório e o subdiretório, exemplo:
Exemplo para o nosso caso:
Se quiser que seja seu comando, basta criar um comando ou adicionar essa função ao seu ~/.bashrc
:
Nesse caso tratei o final do nome do repositório, caso o usuário copie com .git ou com / no final do nome da URL.
E para usar, basta rodar: git-svn [repository] [subdirectory]
Bem mais simples, né ?
Fica à sua escolha qual modo utilizar. Deixe suas dicas/dúvida nos comentários pra gente interagir na solução ou discussão sobre assuntos relacionados!
Abraços!