Нет, результаты сборки хранить в репозитории не нужно. Потом будет болеть голова от вопросов «а сейчас собранные файлы синхронизированны с исходниками или нет?».
Есть несколько вариантов. Один из них — запускать сборку на сервере. Т.е. сервер делает `git pull && grunt build` и появляются новые файлы. Ещё лучше — делать не git pull, а git clone в новую папку. Тогда можно будет быстро откатиться на предыдущую версию, если что-то пошло не так. Папки называть по текущему времени. И хранить последние N (ну, например, пять).
project
2016-02-29-12-15-36
2016-03-15-17-00-11
2016-03-21-11-57-59
current -> 2016-03-21-11-57-59 // current — ссылка на папку с последней версией
Т.е. при деплое происходит вот что:
git clone <%projecturl%> <%currenttime%>
cd <%currenttime%>
grunt build
cd ..
rm <%current%>
ln -s <%currenttime%> current
Есть много утилит, автоматизирующих это. Например, Capistrano (в руби). Какой у вас в проекте основной язык? Для него наверное есть аналоги.
Можно просто заливать готовые файлы rsync’ом. А можно написать bash-скрипт, типа
shipit.