How to Git Clone Without Downloading the File Objects

How to Git Clone Without Downloading the File Objects

Is it possible to download all commits but not the files themselves? I want to run bisect but download the versions from the build server instead of compiling myself.

4

1 Answer

When you run git bisect you can supply --no-checkout as argument if you do not want to checkout a new working tree for each iteration.

Same goes for git clone --no-checkout to avoid a working tree based on HEAD after the clone.

You can run git bisect run my_script <arguments> having my_script do whatever you want after each checkout.

In summary:

git clone <repo> --no-checkout
git bisect --no-checkout run my_script arguments

EDIT:

As per the suggestion of @phd, since recent versions (v2.2x) of git, "partial clones" are now supported meaning you can supply a clone "filter".

In your case we'll use --filter=blob:none and --filter=tree:0 and only retain commit-objects, but it requires the server to have a version of git installed that understands the filter or you'll get a warning:

warning: filtering not recognized by server, ignoring

The clone command you'll want to use:

git clone <repo> --filter=blob:none --filter=tree:0 --no-checkout
5

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Alexander Ross
Author

Alexander Ross

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.