Header Ads

Como baixar arquivos únicos de um repositório Github

Embora o Github seja mais comumente usado para hospedar grandes projetos de código, ele também funciona como um excelente host de arquivos e, às vezes, você só deseja baixar um ou dois arquivos sem clonar o repositório inteiro. O Github oferece suporte para isso, tanto no site quanto na linha de comando.

Baixando um único arquivo do site do Github

Se estiver usando o navegador da web sem problemas, você pode baixar arquivos individuais com bastante facilidade. Vá até o arquivo que deseja baixar e clique em “ Raw: ”

Isso abrirá uma página com um link direto para o arquivo. Você pode copiar / colar aqui, mas na maioria dos navegadores, você deve conseguir clicar com o botão direito e selecionar “ Salvar como ” para baixar o arquivo diretamente.

Para arquivos de código, pode tentar salvar como . txt, que você precisará corrigir manualmente antes ou depois do download.

Baixando da linha de comando

Como os arquivos são servidos em raw. githubusercontent. com, você pode baixá-los diretamente por meio do wget ou curl. Eles são armazenados em locais acessíveis, portanto, se você souber o nome de usuário, o repositório e o caminho do arquivo, poderá baixar qualquer arquivo em qualquer branch, como:

 wget https://raw. githubusercontent. com/username/repository/branch/path/filename. md

Publicidade

Se você preferir usar a API do Git, poderá interagir com ela mais diretamente e baixar arquivos quando não tiver certeza do local exato do arquivo. Você precisará criar um token de acesso pessoal para usar a API, com o qual você pode substituir “ ACCESS_TOKEN ” neste script.

 curl -H 'Autorização: token ACCESS_TOKEN' -H \ 'Aceitar: application / vnd. github.v3. raw' -O -L \ https://api. github. com/repos/username/ repositório / conteúdo / caminho / nome do arquivo. md 

O endpoint / repos /// contents fará coisas diferentes dependendo se o caminho aponta para um diretório ou arquivo. Se for um arquivo, ele retornará metadados sobre esse arquivo:

 {"type": "file", "encoding": "base64", "size": 5362, "name": "README. md", "path": "README. md", " conteúdo ":" conteúdo codificado ... "," sha ":" 3d21ec53a331a6f037a91c368710b99387d012c1 "," url ":" https://api. github. com/repos/octokit/octokit. rb/contents/README. md "," git_url ":" https://api. github. com/repos/octokit/octokit. rb/git/blobs/3d21ec53a331a6f037a91c368710b99387d012c1 "," html_url ":" https://github. com/octokit/octokit. rb/blob/ master / README. md "," download_url ":" https://raw. githubusercontent. com/octokit/octokit. rb/master/README. md "," _links ": {" git ":" https: // api . github. com / repos / octokit / octokit. rb / git / blobs / 3d21ec53a331a6f037a91c368710b99387d012c1 "," self ":" https://api. github. com/repos/octokit/octokit. rb/contents/README. md ", "html": "https://github. com/octokit/octokit. rb/blob/master/README. md"}} 

Se for um diretório, ele retornará todos os arquivos e subdiretórios em uma matriz:

 [{"tipo": "arquivo", "tamanho": 625, "nome": "octokit. rb", "caminho": "lib / octokit . rb "," sha ":" fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b "," url ":" https://api. github. com/repos/octokit/octokit. rb/contents/lib/octokit. rb "," git_url ":" https://api. github. com/repos/octokit/octokit. rb/contents/lib/octokit. rb " : //api. github. com/repos/octokit/octokit. rb/git/blobs/fff6fe3a23bf1c8ea0692b4a883af99bee26fd3b "," html_url ":" https://github. com/octokit/octokit/libtokit . rb "," download_url ":" https://raw. githubusercontent. com/octokit/octokit. rb/master/lib/octokit. rb "," _links ": {" self ":" https: // api. github. com/repos/octokit/octokit. rb/contents/lib/octokit. rb "," git ":" https://api. github. com/repos/octokit/octokit. rb/git/blobs/fff6fe3a23bf1c8ea0692b4a88399bee26fd99b " , "html": "https://github. com/octokit/octokit. rb/blob/master/lib/octokit. rb"}}, {"type": "dir", "size": 0, "name ":" octokit "," path ":" lib / octokit "," sha ":" a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d "," url ":" https://api. github. com/repos/octokit/octokit. rb/contents/lib / octo kit "," git_url ":" https://api. github. com/repos/octokit/octokit. rb/git/trees/a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d "," html_url ":" https://github. com/octokit/octokit. rb / tree / master / lib / octokit "," download_url ": null," _links ": {" self ":" https://api. github. com/repos/octokit/octokit. rb/contents/lib/octokit "," git ":" https://api. github. com/repos/octokit/octokit. rb/git/trees/a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d "," html ":" https://github. com/octokit/octokit. rb / tree / master / lib / octokit "}}] 

Você pode então usar um analisador JSON como o jq para extrair o URL e baixá-lo. Para obter a lista de arquivos do repositório recursivamente, você precisará buscar a árvore raiz.

RELACIONADO: Como trabalhar com JSON na linha de comando

Nenhum comentário