Для хранения в репозитории разумно разделять папки src(исходный код) и bin(собранные бинарники) и добавлять под систему хранения версии только src.
Заголовочные файлы обычно хранят рядом с соответствующим *c или *.cpp файлами. Если же заголовочный файл предназначен для повсеместного использования можно использовать пути src/include/foo/bar.h, и добавить src/include в include_path вашего проекта, чтобы не писать #include "../../foo/bar.h"
В целом разбиение на папки должно соответствовать логике проекта. Скажем, графический интерфейс было бы логично выделить в отдельный каталог src/GUI.
Вы можете посмотреть примеры в репозиториях опенсорсных программ. Например:
qBittorrentVLC