I use git to sync a local bin folder between machines. One branch per type environment though sometimes that's just a branch for a particular machine.
common files between many environments are just in a common subdirectory. This could be a submodule, but that's overkill, I just sync it via a git path checkout from time to time.
Dotfiles are in there too and symlinked to wherever they're used. Similar with other configs. If they're picky about being symlinked, I'll write a quick copy script to pull them into a subfolder to bring it into git.
common files between many environments are just in a common subdirectory. This could be a submodule, but that's overkill, I just sync it via a git path checkout from time to time.
Dotfiles are in there too and symlinked to wherever they're used. Similar with other configs. If they're picky about being symlinked, I'll write a quick copy script to pull them into a subfolder to bring it into git.