> 1) You can request a specific list of commits of a branch by index (e.g. > "1 to 30 <sha1 of branch>" would send the first 30 commits from the > server to the client of the branch "master" If your Git server supports it, a partial solution is to do a partial clone, e.g.: git clone --filter=tree:0 --bare \ https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux And you can add --depth=10 if you want the last 10 commits in that branch too: git clone --filter=tree:0 --bare --depth=10 \ https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux This creates a partial clone with no local trees or blobs. If you're just doing ancestry checks with "git merge-base", that should be sufficient. (If you're doing anything else, trees and blobs will be downloaded as Git needs them.)