#git #cli

app git-grab

A small tool to clone git repositories to a standard location, organsised by domain name and path

4 releases (2 stable)

1.0.1 Jul 7, 2022
1.0.0 Jul 4, 2022
0.1.2 Jul 11, 2021
0.1.1 Jul 11, 2021

#94 in Development tools


295 lines

Git Grab

A small tool to clone git repositories to a standard location, organised by domain name and path. It runs on BSD, Linux, macOS, Windows, and more.

Git Grab clones a repo into $GRAB_HOME, organised by domain and path. GRAB_HOME defaults to ~/src if not set or supplied via the --home argument. For example:

$ git grab github.com/wezm/git-grab
Cloning into '/home/wmoore/src/github.com/wezm/git-grab'...
remote: Enumerating objects: 30, done.
remote: Counting objects: 100% (30/30), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 30 (delta 9), reused 27 (delta 7), pack-reused 0
Receiving objects: 100% (30/30), 12.50 KiB | 12.50 MiB/s, done.
Resolving deltas: 100% (9/9), done.
Grabbed https://github.com/wezm/git-grab to /home/wmoore/src/github.com/wezm/git-grab

$ exa --tree ~/src
└── github.com
   └── wezm
      └── git-grab
         ├── Cargo.lock
         ├── Cargo.toml
         └── src
            ├── args.rs
            ├── grab.rs
            └── main.rs


Pre-compiled Binary

Pre-compiled binaries are available for a number of platforms.

Example to download and extract a binary:

curl https://releases.wezm.net/git-grab/1.0.1/git-grab-1.0.1-x86_64-unknown-linux-musl.tar.gz | tar zxf -

Package Manager

git-grab is packaged in these package managers:

  • Arch Linux: git-grab


    git grab [OPTIONS] [URL]...

        One or more git URLs to clone. Any URL accepted by `git` is valid.
        In addition, URLs without a scheme such as
        github.com/wezm/git-grab are also accepted.

    -h, --help
            Prints help information

        --home [default: ~/src]
            The directory to use as "grab home", where the URLs will be
            cloned into. Overrides the GRAB_HOME environment variable if

    -n, --dry-run
            Don't clone the repository but print what would be done.

    -V, --version
            Prints version information

        See --home

Build from Source

Minimum Supported Rust Version: 1.51.0

git-grab is implemented in Rust. See the Rust website for instructions on installing the toolchain.

From Git Checkout or Release Tarball

Build the binary with cargo build --release --locked. The binary will be in target/release/git-grab.

From crates.io

cargo install git-grab


This tool is inspired by grab by @jmhodges. A small comparison:

Feature Original This Version
VCS Supported Git, Mercurial, Subversion, and Bazaar Git
Dependencies None git
Progress Information No Yes, provided by git


This project is dual licenced under either of:

at your option.


~61K SLoC