Git vs FTP: Или как превратить простую загрузку файлов в квест с инженерными ритуалами

Представьте: вам нужно отнести папку с документами в соседний кабинет. У вас есть два варианта:
  1. Взять папку и отнести
  2. Создать репозиторий, сделать коммит, запушить в origin/main, пройти ревью, инициировать пайплайн деплоя и ждать, пока CI/CD прогонит тесты

Угадайте, какой вариант предлагают современные разработчики даже для сайта-визитки про плетение корзин? Правильно, второй! Давайте разберёмся, когда это разумно, а когда — ритуал ради ритуала.

📁 FTP/SFTP: Старый добрый "отнести папку"


Как это работает:

  1. Открываете FileZilla
  2. Подключаетесь к хостингу
  3. Перетаскиваете файлы
  4. ВСЁ

Аналогия: Это как положить документы в сейф. Открыли дверцу, положили, закрыли. Все видят итоговое состояние сейфа.

Что вам нужно:

  • Данные FTP (хост, логин, пароль)
  • Любой FTP-клиент (или даже проводник Windows)
  • Всё


🧙‍♂️ Git: Магический ритуал "загрузить файл"


Как это работает:

  1. git init (инициализируем магию)
  2. git add . (готовим заклинание)
  3. git commit -m "fix typo" (фиксируем в истории)
  4. git push origin main (отправляем в облако)
  5. Хостинг ловит webhook, запускает сборку
  6. CI/CD пайплайн гоняет тесты (для сайта про корзины!)
  7. Если всё ок — файлы появляются на хостинге

Аналогия: Это как сдать документы в архив. Сначала опись, потом проверка, потом каталогизация, потом размещение на полке. А чтобы исправить опечатку — нужно выписать новую версию документа.

⚔️ Сравнение в бою: "Просто поменяйте номер телефона в футере"


Через FTP:


  1. Открыл footer.php
  2. Поменял цифру
  3. Загрузил файл на хостинг
  4. Готово (2 минуты)


Через Git:


  1. git pull (стянул свежую версию)
  2. Открыл src/components/Footer/Footer.tsx
  3. Поменял цифру
  4. git add .
  5. git commit -m "Update phone number"
  6. git push
  7. Ждём, пока GitHub Actions прогоняет 15 минут тестов
  8. Хостинг автоматически деплоит
  9. Готово (25 минут, если повезёт)


🏗️ Обвес на хостинге: За что вы платите


Хостинг с FTP:


  • Диск (место под файлы)
  • Процессор (чтобы файлы отдавать)
  • Почти всё


Хостинг с Git-автодеплоем:


  1. Git-репозиторий (GitHub/GitLab/Bitbucket) — бесплатно, но публично. Приватный — $4-20/мес
  2. CI/CD пайплайн (GitHub Actions, GitLab CI) — минуты считаются, лимиты есть
  3. Webhook обработка на хостинге
  4. Сборка проекта (если это не чистый HTML) — npm run build съедает память и CPU
  5. Резервное копирование репозитория (а вдруг GitHub упадёт?)
  6. Мониторинг деплоев (упал ли билд?)


Реальная стоимость:

  • Простой хостинг с FTP: 300 руб/мес
  • Хостинг с поддержкой Git-деплоя: от 1500 руб/мес

  • Время разработчика на настройку: 10 000-30 000 руб



📊 Адекватный анализ: Кому что нужно


🟢 Выбирайте FTP/SFTP, если:


Ваш проект — это:
  • Сайт-визитка (HTML/CSS/JS)
  • Небольшой сайт на PHP (WordPress/DLE/OpenCart)
  • Лендинг
  • Файлы, которые нужно просто залить на сервер


Вы — это:
  • Владелец малого бизнеса
  • Фрилансер, делающий простые сайты
  • Студент
  • Человек, который хочет просто загрузить файлы


Экономика:
  • Нулевые накладные расходы на обучение
  • Никакой инфраструктуры кроме хостинга
  • Любой сотрудник может загрузить файл после 5-минутного инструктажа


🔵 Выбирайте Git, если:


Ваш проект — это:
  • Веб-приложение (React/Vue/Angular)
  • Сложный SaaS-продукт
  • Проект с командой от 2+ разработчиков
  • Система, где важно отслеживать КАЖДОЕ изменение
  • Продукт с частыми обновлениями и откатами


Вы — это:
  • Tech-стартап с инвестициями
  • IT-компания с отделом разработки
  • Разработчик, работающий в команде
  • Человек, которому нужна история изменений и ветвление


Экономика оправдана, когда:
  • Стоимость ошибки на продакшене > 100 000 руб
  • Над проектом работают несколько человек одновременно
  • Нужно тестировать изменения перед выкладкой
  • Проект живёт годами и накапливает историю


💀 Реальные риски и подводные камни


Риски FTP (их любят преувеличивать):


«А вдруг перетру файл?»
  • Решение: Бэкапы хостинга (есть у всех)
  • Решение: FileZilla сохраняет историю загрузок


«А если несколько человек правят?»
  • Реальность: На сайте малого бизнеса обычно правят 1-2 человека
  • Решение: «Петя, не трогай, я сейчас обновляю!» — работает 20 лет


Риски Git (о которых молчат):


«Упал CI/CD пайплайн»
Реальный кейс: Сайт цветочного магазина не обновлялся 3 дня, потому что в package.json сломалась версия зависимости. Продажи упали на 40%.

«Зависимость от инфраструктуры»
GitHub упал → деплои встали. Интернет пропал → не запушить. Docker сломался → не собрать.

«Переусложнение простых задач»
Чтобы поменять картинку на главной, нужно:
  1. Найти дизайнера
  2. Получить макет
  3. Оптимизировать изображение
  4. Создать feature-ветку
  5. Сделать PR
  6. Пройти ревью
  7. Замержить
  8. Ждать деплоя


И всё это для того, чтобы заменить hero.jpg на hero-new.jpg.

🎭 Театр абсурда: Git для нетипичных случаев


Кейс 1: Сайт бабушки-рукодельницы


  • Что нужно: Выложить 10 фото вязаных носков
  • Что предлагают: Git-репозиторий, GitHub Pages, GitHub Actions для оптимизации изображений
  • Реальность: Бабушка плачет, внук-студент тратит выходные на настройку
  • Итог: Носки так и не выложены, бабушка продала их соседке


Кейс 2: Визитка сантехника


  • Что нужно: Контакты, фото работ, прайс
  • Что предлагают: React, TypeScript, Vite, Tailwind, Git flow
  • Реальность: Сантехник Женя не может поменять номер телефона, когда меняет оператора
  • Итог: Клиенты звонят на старый номер, Женя теряет заказы


Кейс 3: Каталог продукции завода


  • Что нужно: 5000 товаров, которые обновляются раз в квартал из 1С
  • Что делают: Git для хранения JSON-файлов с товарами
  • Реальность: Каждый выгрузка — конфликт мержа на 5000 строк
  • Итог: Завод нанимает отдельного «Git-инженера» за 120 000 руб/мес


⚖️ Честный чеклист: Что выбрать


Отвечайте ДА на FTP, если:


  • Сайт меняется реже 1 раза в неделю
  • Над сайтом работает 1-2 человека
  • Изменения простые (текст, картинки, стили)
  • Нет командной разработки
  • Хотите минимальную инфраструктуру
  • Бюджет ограничен
  • Нет DevOps-специалиста


Отвечайте ДА на Git, если:


  • Над проектом работает 3+ разработчика
  • Есть автоматические тесты
  • Нужны code review перед выкладкой
  • Часто откатываете изменения
  • Веб-приложение, а не сайт
  • Есть бюджет на инфраструктуру
  • Есть команда поддержки


💡 Практический совет: Гибридный подход


Для малого бизнеса идеально:


Контент → через админку CMS
Пример: Новости, статьи, товары — всё через веб-интерфейс

Шаблоны/стили → через FTP
Пример: Поменяли дизайн — дизайнер отдал файлы, верстальщик залил по FTP

Сложная логика → через Git (если есть)
Пример: Кастомный модуль оплаты — тут да, нужен Git

Техническая реализация:



Хостинг за 300 руб/мес
├── CMS (WordPress/DLE) ← контент-менеджеры правят тут
├── /templates/ ← дизайнер заливает по FTP
└── /modules/ ← разработчики (если они есть) используют Git


🎯 Вывод: Не усложняйте без необходимости


Git — это прекрасный инструмент для:

  • Командной разработки
  • Сложных проектов с историей
  • Процессов, где важны review и тестирование

Но для 80% сайтов в интернете:

  • Сайт-визитка ИП
  • Лендинг продукта
  • Каталог товаров
  • Блог или новостной портал

...FTP более чем достаточно.

Помните: каждый слой абстракции — это:

  • Новые точки отказа
  • Дополнительные расходы
  • Время на обучение
  • Зависимость от специалистов


Задайте себе вопрос:
«Если мой сайт перестанет работать на 3 часа, сколько я потеряю?»

  • Если ответ «100 000+ рублей» — возможно, Git и CI/CD оправданы.
  • Если ответ «ну, несколько клиентов отложат заказ» — FTP ваш выбор.

Не позволяйте навязать себе космические технологии для поездки в соседний магазин. Иногда проще и эффективнее просто дойти пешком.