Executando verificação de segurança...
12

Github: Clonar todos repositórios de uma Organização

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

Como buscar os repositórios da Organização

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.

$ gh search repos org-aqui --limit 1000

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

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

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:

$ while read -r repo _; do
  gh repo clone "$repo" "$repo"
done

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, 'o pipe pode ser em outra linha'. Por exemplo:

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

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:

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

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

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

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 deixo meu Linkedin.

Carregando publicação patrocinada...
2
2
1

Fiz isso no passado. Eu sempre faço isso caso a organização que eu trabalho me permite manter o clone do repo na minha máquina. Isso fica bacana porque depois eu faço o push pro meu repo e deixo privado para futuras consultas. :)

1

Extremamente util esse script quando organização é produtiva no github e migração para um git particular é questão de horas, por exemplo.

2