Hay tres formas, la buena, la mala y la fake.
La fake: crea enlaces simbólicos
et voila!
La mala: usar submodulos de git, nada recomendable pero puede que te sea útil.
La buena: publica los proyectos 1, 2 y 3 en algún repositorio público de dependencias como puede ser Composer, Bower, NPM, etc. y entonces has que el proyecto 4 consuma dichas dependencias, no hace falta versionarlas ahí mismo.
Es decir, la solución real consiste en usar manejadores de dependencias.