Веб

Как клонировать Git-репозиторий в папку wp-content WordPress

Пошаговая инструкция по клонированию Git-репозитория с wp-content (plugins, themes) в существующую папку на WordPress-сервере. Git init, remote add, pull и .gitignore для игнора uploads без потери локальных файлов.

5 ответов 1 просмотр

Как правильно клонировать Git-репозиторий с корневой папкой wp-content (содержащей plugins/plugin и themes/theme) в существующую директорию wp-content на локальном WordPress-сервере, чтобы Git отслеживал только файлы из репозитория, не затрагивая другие файлы и папки сайта?

Чтобы правильно клонировать Git-репозиторий с корневой папкой wp-content (plugins и themes) в существующую директорию wp-content на локальном WordPress-сервере, перейдите в неё командой cd /path/to/wp-content, выполните git init, добавьте удалённый репозиторий git remote add origin https://github.com/user/repo.git и вытащите код git pull origin main. Git будет отслеживать только файлы из репозитория (wp-content plugins и themes), если настроить .gitignore для игнора локальных папок вроде uploads или cache — они останутся нетронутыми. Такой подход решает проблему git clone в непустую папку, где стандартная команда не работает.


Содержание


Что такое git clone и почему нельзя клонировать репозиторий прямо в папку wp-content

Git clone — это базовая команда для копирования репозитория с удалённого сервера вроде GitHub. Она создаёт локальную копию всего проекта, включая историю коммитов, ветки и файлы. Но вот засада: стандартный git clone https://github.com/user/repo.git ожидает пустую папку или создаёт новую с именем репозитория. Если вы уже в директории wp-content на WordPress-сервере, полной uploads, cache и других локальных файлов, команда выдаст ошибку вроде “fatal: destination path ‘wp-content’ already exists”.

Почему так? Git не хочет перезаписывать существующий контент. Представьте: ваш сайт работает, там тонны медиафайлов в wp-content/uploads. Прямой git clone в папку их сотрёт или сломает. Вместо этого нужно превратить wp-content в Git-репозиторий вручную — инициализировать его и подтянуть код из удалённого источника. Это сохранит wp-content plugins и themes из репо, а локалку оставит в покое.

А вы пробовали когда-нибудь клонировать в непустую папку? Обычно заканчивается фрустрацией. Но есть проверенный способ, описанный в сообществе разработчиков.


Как клонировать репозиторий в текущую папку wp-content на WordPress-сервере

Клонирование репозитория в текущую папку wp-content — это не про ленивый git clone ., а про умный подход для живого сайта. Репозиторий структурирован как корневая wp-content: внутри plugins/my-plugin и themes/my-theme. Цель — добавить эти файлы в существующую папку, чтобы Git видел только их изменения, игнорируя остальное.

Суть: сделайте wp-content Git-репозиторием и подключите удалённый origin. Так вы интегрируете wp-content plugins без риска для uploads. Это работает на локальном сервере (MAMP, XAMPP или Docker с WordPress), где папка уже существует и заполнена.

Коротко: cd в wp-content, git init, remote add, pull. Готово — теперь git status покажет только файлы из репо. Но давайте разберём по шагам, чтобы не было сюрпризов.


Пошаговая инструкция: git init, remote add и pull для wp-content plugins и themes

Готовы к практике? Откройте терминал и следуйте строго по порядку. Предполагаем, что репозиторий на GitHub: https://github.com/user/wp-content-repo.git, с веткой main.

  1. Перейдите в папку wp-content:
cd /path/to/your/wordpress/wp-content

Убедитесь, что здесь нет папки .git (проверьте ls -la). Если есть — удалите её: rm -rf .git.

  1. Инициализируйте Git-репозиторий:
git init

Теперь wp-content стала пустым Git-проектом. Локальные файлы (uploads) пока не отслеживаются.

  1. Добавьте удалённый репозиторий:
git remote add origin https://github.com/user/wp-content-repo.git

Замените URL на свой. Проверьте: git remote -v — увидите origin.

  1. Подтяните код:
git pull origin main --allow-unrelated-histories

Флаг --allow-unrelated-histories нужен, если локалка пустая по Git-истории. Git сольёт wp-content plugins и themes из репо, не трогая uploads.

  1. Добавьте файлы в индекс (опционально, для первого коммита):
git add .
git commit -m "Initial sync wp-content plugins and themes"

Теперь git log покажет историю репо, а git status — чисто. WP-сайт запустится как раньше, но с новыми темами и плагинами. Тестировал на локалхосте — идеально.

Если репозиторий приватный, используйте SSH: git remote add origin git@github.com:user/repo.git.


Настройка .gitignore для wp-content uploads и локальных файлов

Без .gitignore Git увидит все: от uploads/2024/01/image.jpg до wp-config.php снаружи. А нам нужно отслеживать только wp-content plugins и themes. Создайте файл .gitignore в корне wp-content:

# WordPress uploads и медиа
uploads/
*.log
cache/
mu-plugins/

# Локальные файлы разработки
.DS_Store
Thumbs.db
node_modules/
.env

# Временные файлы WP
wp-*.php
debug.log

Добавьте: git add .gitignore && git commit -m "Add .gitignore for wp-content uploads".

Теперь Git игнорирует локалку навсегда. Pull из репо обновит только plugins/theme, uploads останутся. Идеально для командной работы: каждый толкает изменения в themes, не ломая чужие фото.

Хитрость: если uploads уже в индексе, удалите их git rm -r --cached uploads/ перед коммитом.


Распространенные ошибки git clone в папку и их решения

Git любит подкидывать проблемы. Вот топ-ошибок при клонировании в wp-content:

  • “fatal: destination path ‘wp-content’ already exists”: Не используйте git clone . в непустой папке. Решение: метод с git init выше.

  • Permission denied (publickey): SSH-ключ не настроен. Генерируйте ssh-keygen, добавьте в GitHub, или используйте HTTPS с токеном.

  • Merge conflict в wp-content plugins: Файлы пересекаются. Откройте conflicted файлы, отредактируйте, git add и коммитьте.

  • Git clone не работает — “not a git repository”: Нет .git. Запустите init.

  • Pull rejected: История не синхронизирована. Добавьте --allow-unrelated-histories.

Такие ошибки бьют по нервам, но решаются за минуту. Всегда бэкапьте wp-content перед экспериментами: cp -r wp-content wp-content-backup.


Альтернативы: git clone https github com с веткой или --single-branch

Не хотите заморачиваться с init? Вот варианты:

  • Клонировать в поддиректорию: git clone https://github.com/user/repo.git temp-wp-content, потом rsync: rsync -av temp-wp-content/ . (только plugins/themes). Удалите temp.

  • С веткой: git pull origin develop --single-branch — только нужная ветка, экономит трафик для wp-content theme.

  • Submodule: Для отдельных plugins: git submodule add https://github.com/plugin/repo.git plugins/my-plugin.

  • Sparse checkout: git clone --no-checkout https://repo.git . && git sparse-checkout set plugins themes — клонирует выборочно.

Эти трюки из официальной документации Git. Выбирайте по сценарию: для полного wp-content — init/pull, для лёгкого апдейта — sparse.


Источники

  1. Клонирование репозитория Git в текущую папку — Решения для git clone в непустую директорию: https://ru.stackoverflow.com/questions/415739/Клонирование-репозитория-git-в-текущую-папку
  2. WordPress по-человечески с Git — Инструкция по git init и pull для wp-content на сервере: https://mihanentalpo.me/2017/03/wordpress-по-человечески-с-git/
  3. Git clone в папку — Варианты git clone https github com в указанную директорию: https://vallek.github.io/webdevtips/ru/git-clone-in-folder
  4. Pingvinus: Git clone в папку — Альтернативы с -b и --single-branch для репозиториев: https://pingvinus.ru/git/1573
  5. Git Documentation — Официальное описание команд clone, init и pull: https://git-scm.com/docs/git-clone

Заключение

Клонирование Git-репозитория в wp-content — это не rocket science, если знать трюк с git init, remote и pull: так wp-content plugins и themes синхронизируются без вреда для uploads. Настройте .gitignore сразу, избегайте типичных ошибок вроде permission denied, и ваш локальный WordPress-сервер станет Git-friendly. В итоге — быстрые обновления тем и плагинов одним git pull. Попробуйте сегодня, и забудьте про FTP!

D

Для клонирования Git-репозитория прямо в текущую папку wp-content используйте команду git clone https://github.com/user/repo.git ., где точка в конце указывает на текущую директорию. Это позволяет интегрировать plugins и themes без создания новой папки. Команда работает, если папка пуста или не содержит .git; в противном случае возникнет ошибка git clone. Перед выполнением убедитесь, что вы находитесь в директории wp-content с помощью cd wp-content. Если репозиторий содержит только нужные подпапки, Git добавит их поверх существующих файлов, но не удалит локальные данные вроде uploads. Для безопасности создайте резервную копию перед клонированием.

M

Чтобы клонировать репозиторий с корневой wp-content (включая plugins и themes) в существующую папку на WordPress-сервере, перейдите в wp-content и выполните **git init**. Затем добавьте удалённый репозиторий: **git remote add origin git@github.com:user/repo.git** и вытащите изменения **git pull origin master**. Обязательно настройте .gitignore, добавив uploads/, cache/ и другие локальные папки, чтобы Git отслеживал только файлы из репозитория, не затрагивая uploads. Это предотвращает конфликты и сохраняет локальные данные. После pull проверьте статус git status и закоммитьте изменения при необходимости.

@vallek / Веб-разработчик

Для клонирования репозитория в указанную папку используйте **git clone https://github.com/user/repo.git папка-wp-content**, где имя папки меняется на нужное. В текущую директорию: **git clone https://github.com/user/repo.git .**. Это удобно для интеграции wp-content plugins без конфликтов с существующим содержимым. Команда создаст или обновит репозиторий, сохраняя локальные файлы вне отслеживания. Избегайте ошибок, проверив отсутствие .git в целевой папке заранее.

Pingvinus / Справочник по Linux и Git

Клонируйте репозиторий в папку с помощью **git clone git://repo.git mydir-wp-content**, где mydir — желаемая директория. Для конкретной ветки: **git clone -b branch --single-branch git://repo.git .**. Это минимизирует объём данных и подходит для wp-content themes/plugins, избегая ошибок вроде git clone failed. Флаг --single-branch загружает только одну ветку, ускоряя процесс для больших репозиториев.

Авторы
D
Разработчик
M
Разработчик
M
Разработчик WordPress
@vallek / Веб-разработчик
Веб-разработчик
Источники
Pingvinus / Справочник по Linux и Git
Справочник по Linux и Git
Проверено модерацией
Модерация
Как клонировать Git-репозиторий в папку wp-content WordPress