Skip to main content

GitHub clone

Git clone (download) any sub-directories of any GitHub repository (at any reference) without having to clone the entire repository, with only its GitHub URL. Uses the GitHub API to recursively clone the sub-directories tree and files.

Motivation

I often find myself wanting to only download a certain directory, path or package of an especially big repo that I'm currently viewing (without even cloning the entire repo at depth 1) and to do so by simply copy & pasting the GitHub URL so that's why. Probably more instances where this might come in handy ;)

Rate limit

The GitHub API imposes a rate limiting of up to 60 requests per hour applies but can be increased to up to 5000 requests per hour using an OAuth token (to get one see https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line).

GitHub clone makes an initial request to fetch repo metadata and then, a request for every subfolder in the repo. The requests to download the files within the folders are not counted against the rate limit so in most cases (i.e. the folder/repo you're trying to clone has less than 60 subfolders) the rate limit should not be a problem.

Private repositories

To clone private repositories you need to supply an OAuth token for an account with access to the private repository (to get one see https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line).

Installation

Install the script via the pip:

pip install github-clone

or via pipsi:

pipsi install github-clone

Uses Python 3.3+

Usage

GitHub clone (git.io/ghclone)

Usage:
  ghclone <url> [-t | --token=<token>]
  ghclone (-h | --help)
  ghclone (-v | --version)

Examples:
  ghclone https://github.com/HR/Crypter/tree/master/app
  ghclone https://github.com/HR/Crypter/tree/dev/app
  ghclone https://github.com/HR/Crypter/tree/v3.1.0/build
  ghclone https://github.com/HR/Crypter/tree/cbee54dd720bb8aaa3a2111fcec667ca5f700510/build
  ghclone https://github.com/HR/Picturesque/tree/master/app/src -t li50d67757gm20556d53f08126215725a698560b

Options:
  -h --help           Show this screen.
  -v --version        Show version.
  -t --token=<token>  Set a GitHub OAuth token (see https://developer.github.com/v3/#rate-limiting).

License

Copyright (C) 2019-2021 Habib Rehman (https://git.io/HR)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Metadata

Release files for github-clone 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for github-clone 1.2.0
File Size Uploaded
github-clone-1.2.0.tar.gz 8.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for github-clone 1.2.0
File Interpreter ABI Platform
github_clone-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.4 kB

Release files / github-clone-1.2.0.tar.gz

Download URL github-clone-1.2.0.tar.gz
Size 8.3 kB
Tags Source
SHA-256 checksum
How to use checksums
beff535c3846375991a08cca2e8dec4a842af1e98de0e7b97d711873da02f0ec
BLAKE2b-256 checksum
How to use checksums
9e93e96f3a7336dc09ec2abd347157f835dc602041a7cc595e33bbfc090d0cf5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.5

Release files / github_clone-1.2.0-py3-none-any.whl

Download URL github_clone-1.2.0-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ec04e143f8a622ea08572f99dbbe62d7eb65dafec30ab2a8d2e1cd431e5a02ad
BLAKE2b-256 checksum
How to use checksums
598bc4667d3ab859ed682fbc03b62081199dbdb86b31a86d1d791e02b7e1dbfc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.8.5

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page