Q: Автоматический ежедневный коммит в репозиторий git Как реализовать автоматический коммит и пуш в удаленный репозиторий используя базовые утилиты Ubuntu? Как корректно обработать отсутствие изменений?
Данный репозиторий планируется использовать для архивного хранения изменений на сайте без cms.
У нас уже нормально используется git для хранения кода, но вот сейчас задумались о том, чтобы хранить сайт без cms в git. Это даже скорее архивное хранение. Ну и "отчетность" о том, что и когда меняли 

A: По моему личному мнению, всё нужно делать ровно наоборот.
Вы меняете сайт напрямую и хотите сохранять изменения постфактум. 


*

*В результате у вас будет только информация о том, в какой день изменилась та или иная строка, но никакой информации о точном времени и авторе изменения. А когда нет информации об авторе, нет и ответственности.

*А ещё изменения, внесённые в течение дня, не будут иметь бэкапа. 

*Изменения также не будут иметь осмысленного комментария. Зачем что-то поменяли или добавили? Через неделю уже никто не вспомнит.


Считайте, что вы купите абонемент на факапы. Другими словами, технически ваша задача решается очень легко (cron + git), но эта задача не приблизит вас к цели - бэкапам и отчетности об изменениях.
Гораздо более надёжный способ - проводить все изменения сразу и исключительно через git, разворачивая боевое окружение из определённой ветки (обычно master или production). Способов разворачивать сайт из git множество и они за рамками этого вопроса.
Суть вот в чём: если кто-то захотел поменять хоть даже одну строку - делает коммит в ветку, из которой разворачивается сайт. Если этот коммит всё сломал - откатываемся на прошлый и делаем выводы.
Очень хорошо и надёжно будет использовать тестовое окружение, чтобы не выкатывать сразу на бой. В таком случае вы либо разворачиваете сайт на тестовое окружение из каждой feature-ветки, или из какой-то одной, в которую мержатся feature-ветки. Довольно распространённая практика: master разворачивается на stage, production разворачивается на бой.
Про развертывание сайтов из git:


*

*Не самые современные методы: Настройка и развертывание проекта c помощью Git

*Вполне современный метод: (Habr) GitLab CI: Учимся деплоить

*Using Git to manage a web site

*How To Set Up Automatic Deployment with Git with a VPS
Про модель работы и релизы (каждое изменение на бою - это релиз, хоть и небольшой)


*

*Как правильно отправить релиз на git?

A: Используйте утилиту Cron + Bash. 
В Cron задаете период, который будет соответствовать вызову Bash файла. В нем необходимо будет прописать скрипит перехода в директорию репозитория и добавить вот такие команды:
git add -A
git commit -m "время коммита, например"
git push [server] [branch]

Далее просто запускаете Cron-скрипт и все. 
Но да, это извращение, если Вы начали использовать Git - то будьте добры, разберитесь в нем и для чего он нужен, иначе толку от него будет не очень много.

A: GIT не подходит для этой задачи, так он создан для того что бы хранить и отслеживать только изменения в проекте опираясь на действия разработчиков. Хранение проектов с их описаниями и фиксации времени задача для программ из другой категории.
