On a remote, I have two Git commit objects which point to the same tree object (created with git commit-tree). If I fetch one of the commits, the commit object (including the tree object) is fetched. If I then fetch the other commit, the tree object (and its dependencies) is fetched *again* (I think). I don't watch the tree object downloaded again, because it is large (multi-gigabyte). Because the tree object exists locally, I think it should not be downloaded. Is this a bug in Git, or is this by design? How can I confirm that the tree object (and dependencies) are downloaded twice? Is there are more complicated git-fetch (or similar) command I can execute to not download the already-downloaded tree objects? (I have the hash of the tree object which would be potentially re-downloaded, if that helps.) Sequence of commands to reproduce: # Replace this with the URL to an empty Git repository. remote=ssh://foo/bar.git # Create some random data to exaggerate git-fetch times. # If you have a slow remote, reduce 'count'. mkdir minimal cd minimal dd if=/dev/urandom of=random bs=65536 count=4096 # Create our two commits (master and master2). git init git add random git commit -m 'Random data (commit 1)' git branch master2 \ "$(echo 'Random data (commit 2)' \ | git commit-tree 'HEAD^{tree}')" # Push our commits. Expected to take some time. git remote add origin "${remote}" git push origin \ master:refs/heads/master \ master2:refs/heads/master2 # Clone master. Expected to take some time. cd .. mkdir minimal-clone git clone --single-branch --branch master "${remote}" # Fetch master2. Should be nearly instant, but takes some # time. Seems to be download everything again. cd minimal-clone git fetch origin master2 # Try again. git-fetch takes a while, but shouldn't. rm -f .git/FETCH_HEAD git gc --prune=all git fetch origin master2 Info about my system: Local (pusher): OS: OS X 10.10.5 git: git version 2.0.1 ssh: OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 Remote (server): OS: Linux 4.0.9 (CentOS 6) git: git version 2.4.6 sshd: OpenSSH_6.7p1-hpn14v5, OpenSSL 1.0.1e-fips 11 Feb 2013 ��.n��������+%������w��{.n��������n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�