First of all this question is probably more suited for programmers.se. And yes you are in my opinion viewing it from the wrong perspective.
It basically boils down to dependency management. You should just use the commonly used tools of your language/framework to express dependencies instead of copying/symlinking other projects.
If you really need/want to reference other git repositories you should use git submodule
instead of requiring symlinks to other repositories.
The better and cleaner approach is to use the package-management of your distribution for the dependency management, rpm
or dpkg
or just let your build system or tools take care of the dependencies, like e.g.: maven
, bundler
, carton
, openembedded
.