Stage area GIT.

Зачем нужно перед созданием commit помещать файлы в stage area? Добавляя новые файлы через add - это понятно, но зачем добавлять файлы, которые уже находятся под контролем?

По большому счёту stage area это как папка в папке. Вначале мы добавляем файлы в stage, потом комитим их все в локальный репозиторий, потом делаем push в удаленный репозиторий.

Выходит, что шаг stage лишний. Зачем он нужен?

Чтобы можно было выбирать, какие файлы включать в коммит. Из практики — чаще всего случается git commit -am "...", уже до автоматизма дошло. Т.е. смотрю статус, если есть новые — добавляю, и затем коммит с флагом -a. Т.к. в моем случае git по большей мере нужен для командной работы — сам контроль версий не особо использую. Если нужно балансировать между версиями — используются ветки.

Тем не менее, если действительно относиться к каждому коммиту, как к стабильной версии для продакшна, то может понадобиться именно такой подход. В этом случае как раз таки staging area и играет роль черновика, из которого можно включить те или иные файлы.