I merged a tree onto a my repository by using git subtree add without the squash option. A git log shows that the commits were successfully added to the repository. However, if I do a
git log --follow filename
git log --follow should work with subtree merges, but it is known to be hackish for a long time [1-3].
One can stick with subtree merges and rest asured that the strategy is valid for tracking multiple histories, and patiently wait for the unavoidable event that
git log --follow will improve. This may actually be a viable decision, since at present
git log --follow can see some history in very useful cases. Say you moved a file from the toplevel repo to a sub-repo, then it can track the full move. When you want to track the history that is specific to a sub-repo, you really have to have a separate copy or check out a sub-repo branch.
You can get logs for the files like this :
git log -- '*filename' # from the toplevel
This views each commit that touched a file whose name
filename. It won't follow actual renames, and may show false
positive if you have several files with the same basename .
You can also merge the repositories using different strategies. Ref  shows a way to do this which is very close to what you have with tree merging, but with traceable histories. Basically, you:
git mvthe sub-repo files to separate folders
-Xsubtreeflag to git merge
 From the git mailing list http://git.661346.n2.nabble.com/Bug-Files-are-losing-history-after-subtree-merge-td7597197.html
 From the git mailing list http://git.661346.n2.nabble.com/gsoc-Better-git-log-follow-support-td6188083.html#a6188352
git log --follow has been in Google Summer of Code