If you’re not sure what Git submodules are or why/where they’re useful, I recommend reading this post first. Then, if you’re ready to use them for managing your Arduino libraries, check out this post from Glyn Hudson over at the Open Energy Monitor blog:
Library management for Arduino has always been a bit of a pain; having to go and download and install all the required libraries for various locations on the internet and hope that they are the correct version. Library management becomes even more important when debugging and supporting a project as libraries get changed and updated.
Things have improved in recent years with the increased use of GitHub for Arduino libs allowing changes to be tracked easier and the later version of Arduino IDE including a library manager which can auto-update.