Робота з віддаленим git-репозиторієм на своєму сервері

Знадобилося мені на дозвіллі налаштувати git репозиторій на власному сервері. Раніше я працював тільки з SVN і з git'ом практично не стикався. Тому виконавши даний квест отримав +1 до досвіду роботи з VCS, яким хочу з вами поділитися.

Незважаючи на численні статті, уроки і підручники з git, для того, щоб в'їхати в нього і нарешті налаштувати все як треба, у мене пішло два дні. А на повторення всієї цієї процедури з початку і до кінця - 10 хвилин. Легко, коли знаєш). Щож, як би там не було, інструкцій для свого кейса я не знайшов і вирішив це виправити, а кейс наступний:

У нас є віддалений сервер, на якому є git і доступ по SSH. На ньому потрібно створити git репозиторій. На клієнті з репозиторієм ми будемо працювати в IDE PhpStorm. Так само потрібно, щоб відправлені зміни з клієнта, тобто з нашого локального комп'ютера, відразу потрапляли в головний репозиторій на сервері, а не вимагали ручної перевірки і мерджа.

1. Налаштування git сховища на віддаленому сервері

Для того, щоб налаштувати репозиторій потрібно:

1. Перейти в папку з нашими робочими файлами

Все, на стороні сервера все готово. Переходимо до клієнта.

2. Створення проекту в PhpStorm, настройка IDE

У вікні створення нового проекту, вибираємо Checkout from version control system. Ви вікні - вибираємо git.

Налаштування роботи з репозиторієм

Перш ніж почати працювати, потрібно виконати ще пару дій. Зокрема, PhpStorm створює свю папку .idea, де зберігає всякі свої системні файли. І Git цю папку вважає частиною сховища, але вона нею не є. На сервері її бути не повинно. І перше, що ви побачите у вкладці Changes - будуть файли з папки .idea, які не були додані до головного сховища.

Потрібно зробити так, щоб Git цю папку ігнорував.

Можливо ви знаєте про файл .gitignore, який служить для опису файлів і каталогів, які Git повинен ігнорувати. Але прописувати папку .idea в даному файлі - неправильно. Так як цей файл коммітов якщо кожен розробник буде туди прописувати якісь свої папки, які є тільки у нього - цей файл може перетворитися в смітник. Правильне рішення - використовувати файл, який знаходиться в .git / info / exclude. Цей файл, на відміну від .gitignore НЕ коммітов, а поширюється виключно на локальну копію. У нього то ми і прописуємо:

Якщо зараз подивитися на вкладку Changes - ви побачите, що список порожній! Ура!

Файл .gitignore ми теж додаємо. У ньому ми вказуємо папки, які Git не потрібно індексувати. Це, наприклад папки з логами, якимись одними завантаженнями і т.п.

Щоб закріпити додавання файлу .gitignore, потрібно його закоммітіть і зробити потім push на сервер. У вкладці Changes зліва є кнопка "Commit". Далі все зрозуміло, розберетеся.

3. Автоматичне застосування змін в головному репозиторії

І останнє. Спочатку схема роботи така, що ви відправляєте свої зміни в bare-репозиторій. А потім власник головного сховища дивиться на те, що ви там накодо і приймає рішення, чи включати ваші правки в головний репозиторій чи ні. І якщо рішення позитивне, тоді він їх мерджіт в нього. Однак в моєму випадку, такої людини немає. Нас всього 2 людини і нам потрібно, щоб при команді push всі зміни автоматично застосовувалися в головному репозиторії. Вирішується це завдання за допомогою хуков.

Перейдіть в ваш bare-репозиторій. Хукі лежать в папці hooks. Якщо ви в неї перейдете, ви побачите кілька файлів, які закінчуються на .sample. Це приклади хуков, якщо прибрати .sample з назви файлу - хук почне працювати. Нам потрібно додати хук "post-update":

Схожі статті