When git-subtree is pulling data using the tag reference, it writes the tag's sha1 into a metadata. It could be a problem next time, since this commit object is not a part of main tree, and could be lost. Steps to reproduce: # add some stuff to a existing tree # history will refer to v0.1 tag object instead of v0.1^{commit} git subtree add --squash -P dir/ repo v0.1 # prune all dangling objects including external v0.1 tag git gc --aggressive --prune=all # this will fail git subtree pull --squash -P dir/ repo v0.2