Если чисто по коду, сам гит у меня лежит в корневой папке WordPress. `.gitignore` файл выглядит примерно вот так:
# PHPStorm
.idea
# WordPress
*.log
/wp-*.php
/index.php
/xmlrpc.php
/license.txt
/readme.html
/sitemap.xml
/sitemap.xml.gz
/backup*
wp-admin/
wp-includes/
wp-content/*
!wp-content/themes/
wp-content/themes/*
!wp-content/plugins/
wp-content/plugins/*
!wp-content/themes/ei/
!wp-content/themes/ei-child/
!wp-content/plugins/realty-export
# Frontend tools
wp-content/themes/ei-child/node_modules/
т.е. Вы по умолчанию игнорируете все кроме того, что нужно. По мере разработке можете добавлять или убирать папки.
По бэкапам.
Бекап делаю через плагин
BackUpWordPress (очень удобная вещь, можно делать бекапы всего сайта и базы по расписанию, Вам на почту приходит письмо с ссылкой на скачивание бекапа), экспорт базы на другой сервер делаю с помощью
WP Migrate DB (он не просто заменяет пути в базе но и правит под них сериаллизованые массивы, таким образом некоторые настройки не слетают). Знаю что можно все делать через wp-cli, но он далеко не на каждом сервере стоит, и так уже привычнее. Мне обычно чтобы слить клиентский сайт для работы на локалке даже фтп не нужен, только доступ в админку.
При работе с сервером заливаю файлы прогой WinSCP, она может как FTP так и SFTP, так же умеет синхронизировать папки (заливать только то, что изменилось), на крупных проектах настраиваю синхронизацию в PHPStorm.