Github: Clonar todos repositórios

github github cli bash script

Pré-requisito ter o Github CLI instalado e configurado.

Como buscar os repositórios da Organização

Neste post, vou mostrar como usar o Github CLI para buscar os repositórios da sua organização no Github. O Github CLI é uma ferramenta de linha de comando que permite interagir com o Github de forma rápida e fácil. Você pode criar e gerenciar pull requests, issues, releases e muito mais.

O comando gh search repos permite buscar repositórios no GitHub usando vários critérios, como nome, descrição, linguagem, estrelas, etc. Você pode ver a lista completa de opções com gh help search repos.

Para buscar todos os repositórios de uma organização, você precisa substituir org-aqui pelo nome da organização que você quer clonar.

1
2$ gh search repos org-aqui --limit 1000
3

Isso vai retornar uma lista de até 1000 repositórios da organização com o nome,descrição, visibilidade.


Se você quer buscar apenas os repositórios de um time específico dentro da organização, você pode usar o parâmetro --match name para filtrar os resultados pelo nome do time

1
2$ gh search repos org-aqui --match name "seu-time" --limit 1000
3

Clonando repositórios

O segundo passo é clonar cada repositório da lista usando o comando gh repo clone. Você pode usar um loop para fazer isso de forma automática. Por exemplo:

1
2$ while read -r repo _; do
3  gh repo clone "$repo" "$repo"
4done
5  

Esse loop vai ler cada linha da lista de repositórios e executar o comando gh repo clone com o nome do repositório. O segundo argumento do comando é o nome do diretório onde o repositório será clonado. Neste caso, estamos usando o mesmo nome do repositório, mas você pode alterar isso se quiser.


Agora, basta combinar a busca com o loop acima. Você pode usar um pipe (|) para enviar a saída de um comando para a entrada do outro. Por exemplo:

1
2$ gh search repos org-aqui  --match name "seu-time" --limit 1000
3| while read -r repo _; do
4  gh repo clone "$repo" "$repo"
5done
6

Esse comando vai buscar os repositórios da organização org-aqui que tenham seu-time no nome e cloná-los em diretórios com o mesmo nome. Você pode adaptar esse comando para as suas necessidades, mudando os argumentos do gh search repos ou do gh repo clone.


Repositório pessoal

Para buscar seu repositórios use:

1
2$ gh search repos --owner "seu-usuario-github" --limit 1000 --visibility public
3

Aqui o loop é o mesmo, o que muda é a forma de pesquisar.

1
2$ gh search repos --owner "seu-usuario-github" --limit 1000 --visibility public | while read -r repo _; do
3  gh repo clone "$repo" "$repo"
4done
5

Pronto! Agora você tem uma cópia local de todos os repositórios da organização e pessoais que você queria. Espero que este post tenha sido útil para você. Se tiver alguma dúvida ou sugestão, me envie uma mensagem no meu Linkedin.