Вообще-то, в вашем случае надо просто правильно организовать ваши рабочие процессы. Напрямую с сервером работа не делается и никакие файлы из IDE или еще откуда напрямую на заливаются, и уж точно с сервера обратно тоже ничего не скачивается из кода. Изменениям в коде неоткуда взяться на сервере: если они у вас там каким-то чудом появляются - то это значит, что вы делаете что-то не так. Правильный алгоритм работы следующий: разработчик работает локально на своем ПК, у него локально развернут сервер разработки с которым он напрямую и работает, без всяких синхронизаций. Когда часть работы готова и протестирована - разработчик делает коммит в гите, коммит отправляется на гит-сервер, на гитсервере срабатывает хук/событие, по которому запускается деплой приложения. И уже вот этот процесс деплоя запускает процесс автоматического тестирования, сборки и прочее, а по завершении заливает на сервер и, при необходимости, перезапускает зависимые сервисы и прочее. При чём деплой идёт сначала на тестовый сервер или стейж, где проводится тестирование и проверка работы приложения и всех его систем, и только потом идёт деплой на основной сервер.