Всё зависит от вашей стратегии и от вашего проекта.
1. Если сайт маленький, то обычно я размещаю в корне сайта. В gitignore вношу upload, как советовали выше.
2. С точки зрения безопасности имеет смысл инициализировать на уровень выше. Чтобы 100% исключить доступ к файлам репозитория. Конечно вы и так должны ограничить доступ на уровне веб сервера, но мы же понимаем, что лучше подстелить соломки
3. Если проект большой, может быть многосайтовость, то иногда имеет смысл делать несколько репозиториев. Тут возможны варианты:
3.1 Проект большой, но 1. Тогда в проекте имеет смысл делать субмодули для /bitrix/, /local/, иногда отдельных модулей в них...
3.2 Если проектов много (многосайтовость) с 1 общим ядром, то я обычно делаю полноценный репозиторий в ядре (/bitrix/), и по репозиторию в публичке, где исключаю /bitrix/ через gitignore.
P.S. Недостаток держать ВЕСЬ /bitrix/ в репозитории в том как будут происходить обновления. После них будут следовать горы файлов в коммит. И такой коммит фиг откатишь (т.к. при обновлении БУС затрагивается ещё и БД), именно поэтому выше вам рекомендовали убрать его из репы. Но т.к. иногда в этом каталоге есть и свои файлы (как модули, так и какие-то правки ядра), то бывает потребность всё же делать как я описал.