This is the approach I did with a similar project. It's especially useful, if the amount of customization's is rather huge and includes many files.
I have a folder structure like this (not all actual files and folders are listed here, just important ones):
core/
.git
app/
config/
database/
public -> ../design/public/
resources -> ../design/resources/
routes/
.gitignore
design/
.git
public/
resources/
.gitignore
So I have two main folders core and design. The core folder has symlinks to public and resources located in the design folder. Both folders have their own git repository. You don't even need to exclude public and resources in the .gitignore of the core folder, because git will just keep track of the symlinks not their content.
Of course you can also move single files like special controllers, configs, database seeds, etc. to the design folder as well, if they're not part of the core components of your app.
On your server(s) you deploy the app in the same folder structure. You pull one repository in the core folder and the other in the design folder. You can freely work on the core repository and push the updates to all servers. And if you have design updates for sites you can work on the design repository and push that to a certain site.
Hope you could follow my explanation - for me this scenario works pretty well!