Правильне використання Git під час розробки на WordPress - Блог розробника

Ви ж чули про Git, правда? На сьогоднішній день це одна із найпопулярніших систем контролю версій. Плюс до всього, Git можна знайти практично скрізь: він встановлений багатьма хостинг-провайдерами, використовується як система, що працює на GitHub і Bitbucket, а зараз навіть вбудований у прості WordPress плагіни. У цій статті я намагатимусь розповісти, що за звір цей Git і як з ним працювати.

Останнім часом уWordPress спільноті було багато шуму навколо цієї системи, через створення такихGit інструментів, як VersionPress, WP Pusher, Revisr та Gitium. Як і більшість іншихфахівців з WordPress, я є фрілансером, який працює один 🙂 і ніколи особливо не приділяв увагиконтролю версій. Тим не менш, весь цей галас навколоGit допоміг усвідомити, що мені час значно підтягнути свої навички і пізнання вGit області.

Можливо ви, як і я, є фахівцем WordPress і розробником, який не до кінцяосвоїв Git або іншусистему контролю версій. А, можливо, ви працюєте у невеликій команді розробників, і зрозуміли, що вашій команді потрібен найкращий спосіб відстеження та контролю спільних проектів. Або ви, можливо, вивчаєтерозробку під WordPress і хочете кращеознайомитися з Git, тому в даному випадку розібратися в роботі контролів версій - обов'язкове вміння, яке потрібне кожному професійному розробнику.

Я вивчив, яквикористовують Gitдосвідчені WordPress розробники, та доступні інструменти, за допомогою яких легше поєднуватиGit та WordPress. У цій статті я поділюся з вами власними спостереженнями, а також вкажу ресурси,що полегшують і допомагають розпочати роботу зGit разом з WordPress.

Що являє собою Git?

Git – система контролю версій. Я впевнений, що ви це вже знали, але як він насправді працює?

Давайте подивимося на простий прикладдіїGit, за допомогою яких він відстежує створення та редагування файлу.

  1. Файл створюється;
  2. Файл зберігається;
  3. Файл редагується;
  4. Зміни зберігаються.

Перші два кроки відбуваються один раз, а останні, як правило, багато разів.

Що робить Git :

  • Відстежує кожну збережену зміну;
  • Зберігає «історію структури» файлу до та після внесення змін;
  • Надає можливість додати інформаційну нотатку, яка пояснює причину кожної зміни.

В результатіGit створює повну історію кожної зміни, внесеної у файл з моменту його створення, з можливістю відкату до будь-якого колишнього стану. Іншими словами,Gitробить свого роду «зліпки» з кожної зміни файлу на відміну від того жSVN.

Відслідковуємо цілі проекти разом із Git

Git не обмежується відстеження окремих файлів. Фактично, він стежить за всіма змінами у вказаній папці, у тому числі й у її підкаталогах.

Більшість такихвеб-застосунків, як WordPress, складаються з безлічі файлів, які знаходяться в каталогах і в купі підкаталогів.Git може використовуватися для відстеження будь-якої зміни в кожному з них. Крім того, ви можетеналаштувати Git так, щоб він ігнорував окремі каталоги та файли.

Так само, як і у вищезгаданій історії з окремим файлом,Git має можливість відстеження історіїцілого проекту, що складається з каталогів верхнього рівня, безлічі підкаталогів та файлів.

розробки

Спільна робота через Git

Git також є потужним інструментом, що допомагає при спільній роботі в команді. Він призначений для підтримки централізованої версії проекту, щоб кілька учасників могли одночасно працювати у файлах проекту та поєднувати всі зміни з основною версією. Git навіть помічає конфлікти у виправленнях, внесених різними учасниками команди, та дає можливість усунути ці проблеми.

Уявімо, що ви працюєте над проектом у команді. У вас виникла ідея, яку ви хочете спробувати реалізувати, але ви не хочете щоб весь проект рухався в цьому напрямку.За допомогою Git це легко організувати. Ви можете просто створити нову гілку проекту, розробити своє рішення, і після скинути її, якщо вона не спрацювала. Якщо все відмінно, ви можетеоб'єднати гілку з початковим проектом, або зберегти її як абсолютно новий проект. Наприклад, спочатку WordPress (перш ніж стати WordPress-ом) був створений як розгалуження b2/cafelog . Чи змінили свою думку щодо внесених раніше правок? Не біда.Історія версій Git дозволить відкотитися та скасувати всі зміни.

Де знаходиться Git?

Більшість робочихпроцесів в Git включають управління проектом між трьома різними локаціями:

  • Локальна середовище розробки: ТутGit використовується для відстеження змін під час роботи над локальною копією проекту. За бажанням ви можете перемістити проект наGit-хостинг, або залишити його локальним, якщо ви єдиний, хто над ним працює;
  • Git-хостинг : GitHub та Bitbucket є найбільш популярнимиGit-хостингами, аленині існують і багато інших.Git-хостинг є місцем, де розташовується основна версія проекту. Завдяки йому над розробкою можуть працювати відразу кілька людей;
  • Веб-сервер Якщо на серверівстановлений Git, використовуйтеSSH для клонування репозиторію з вибраногоGit хостингу до каталогу, в якому сайт перебуватиме на веб-сервері. Зараз все більше хостингів встановлюють Git навіть на недорогих загальних серверах.

Як WordPress розробники використовують Git?

Як виглядає процес розробки під WordPress разом із Git? Я поставив це питання і вирішив запитати його у своїх знайомих топWordPress розробників. У принципі, я отримав від усіх однакові відповіді, які створюють наступну загальну схему:

  • Офіційна версія сайту знаходиться вBitbucket репозиторії;
  • SSH використовується для запуску командного рядка та введення команд злиття та відправлення файлів між Bitbucket та сервером;
  • SourceTree (клієнт з графічною оболонкою дляроботи з Git ) використовується длялокальних Git запитів що забезпечують злиття або відправку файлів проекту між Bitbucket та локальним середовищем розробки;
  • Git, запущений через SSH на веб-сервері і керований через SourceTree локально, використовується для відстеження змін та злиття/відправлення файлів. Крім того, застосовується додатковий плагін WP Migrate DB Pro, щоб бути впевненим, що база даних без подій мігрує туди і назад.

Це не єдина модель використанняGit та WordPress, але вона досить універсальна. Схема може змінитися за рахунок вибору іншихGit-хостингів та програмних засобів, що використовуються длявзаємодії з Git.

Проблеми при взаємодії WordPress та Git

Є деякі проблеми, що виникають при спільній роботі Git та WordPress:

  • Як бути з wp-config.php якщо він відрізняється на локальному і продакшн (кінцевий сервер з проектом) серверах, а ви не хочете взаємодіяти з ними в загальному репозиторії?
  • Як бути з медіафайлами? Чи має сенс постійно копіювати їх із продакшн сервера в локальне середовище розробки?
  • Чи має сенс включити все ядро ​​WordPress, сторонні теми та плагіни в Git репозиторій, чи слід обмежитися відстеженням за власними плагінами та змінами в темах?
  • Як зберегти актуальну базу даних між локальними та продакшн серверами?

Можливо, у майбутньому я напишу докладну статтю, як я відповів на всі запитання зі свого списку вище, а поки що давайте продовжимо розбиратися далі.

У проект додається файл .gitignore, який «ховає» непотрібні директорії та файли. Приклад взятий із презентації: