Our goal is to have a special branch (one or more) matching a production environment. Using a service like Beanstalk, you want to be able to push to one of those branches, and have it end up at the server with compiled Sass, JavaScript, image, and other assets. You're unable to run your tools on the server, but you want to keep your repository free from these messy compiled assets.
Let's assume we're using a kind of Gitflow methodology, and that our branch for deployment will be called staging.
You have been doing your work on the develop branch... or wherever...
git checkout staging
git merge -s recursive theirs
grunt build or equivalent
git add -f ./css
git commit -am 'staging deployment'
Ideally, you're omitting the m option, and writing something much more helpful here.
git push origin staging
If your branch is not set up to auto-deploy via Beanstalk or whatever method, you now need to visit the website and initiate a deployment.