У цій статті ми розповімо, чому git не такий страшний і чому не слід боятися великої кількості команд і аргументів.
На сьогоднішній день git - найбільш досконалий спосіб роботи з версіями проектів з відкритим кодом. Його популярність пояснюється просто - для початку роботи зовсім не обов'язково вивчати систему повністю, досить освоїти базовий набір команд, щоб користуватися перевагами цього проекту. Давайте приступимо до вивчення необхідного мінімуму.
Основи
Git - розподілена система зберігання контролю версій програмного забезпечення. Вона відрізняється від численних аналогів можливістю зберігати інформацію в репозиторії на жорсткому диску, ефективно відстежувати будь-які зроблені зміни, відкочуватися на один або кілька кроків назад, якщо в цьому виникне необхідність.
Код в системі Git можна зберігати не тільки локально. Вона дозволяє вивантажувати папки з файлами на так звані хостинги репозиторіїв - сайти GitHub або Bitbucket. Завдяки цьому над одним проектом може працювати необмежена кількість програмістів. Причому система фіксує всі зміни і дає можливість моментально повернутися до найбільш вдалої версії для її вдосконалення.
Установка git
Для того, щоб встановити git на робочий комп'ютер, потрібно зробити кілька простих дій. Для різних операційних систем це виглядає так:
- У Linux просто відкриваємо термінал і встановлюємо git за допомогою пакетного менеджера в дистрибутиві. Команда для Ubuntu має наступний вигляд:
sudo apt-get install git
- Користувачам Windows найзручніше скористатися git for windows, так як він містить установник, клієнт з графічним інтерфейсом і емулятор bash;
- Для ОS X встановіть homebrew і після цього наберіть в командному рядку:
brew install git
Незважаючи на те, що можна використовувати графічний інтерфейс, вивчіть команди. Це сильно розширить ваші можливості.
Налаштування імені користувача та електронної пошти
Після установки git нам потрібно задати ім'я користувача та адресу електронної пошти - таким чином кожен учасник проекту дізнається, хто автор змін. Зробити це дуже просто, відкриваємо систему і набираємо наступні команди:
git config --global user.name "My Name"
git config --global user.email myEmail@example.com
Насправді, можливостей налаштувати систему набагато більше, але зараз ми зосереджені лише на тих опціях, які необхідні для початку роботи.
Створюємо новий репозиторій
Як ми розповідали раніше, принцип git полягає в тому, що історія змін зберігається прямо в папці проекту. Щоб форматувати роботу системи, потрібно відкрити термінал і, зайшовши в папку проекту, запустити команду init. Вона підключить проект саме до цієї папки і створить приховану директорію .git, в якій і буде зберігатися репозиторій з історією змін і нашими налаштуваннями.
На робочому столі створюємо папку git_exercise. Для цього у вікні терміналу вводимо команди:
$ mkdir Desktop/git_exercise/
$ cd Desktop/git_exercise/
$ git init
У відповідь система повинна видати щось схоже на це:
Initialized empty Git repository in /home/user/Desktop/git_exercise/.git/
Якщо отримано таке повідомлення, це означає, що репозиторій створений, але поки що порожній. Тепер створюємо текстовий файл hello.txt і зберігаємо його в директорії git_exercise.
Статус репозиторію
Щоб дізнатися, що відбувається в нашому створеному репозиторії - чи внесені зміни, наскільки актуальна інформація і т.д., скористаємося командою git status.
Це одна з найважливіших команд, так як система відстежує зміни, а з її допомогою ми дізнаємося про результати цього відстеження. Якщо ми наберемо git status в терміналі, то система повинна видати наступне:
$ git status
On branch master
Initial commit
Untracked files:
(use "git add ..." to include in what will be committed)
hello.txt
Цей набір повідомлень говорить про те, що git зафіксував появу файлу hello.txt, однак він не відстежується. Для того, щоб почати його відстеження, його слід належним чином підготувати.
Підготовка файлів
Фактично git - це зошит, в який вносяться записи про зміни. Однак система самостійно не може вирішити, які саме з них слід фіксувати. Для цього ми повинні підготувати файл до коммітів - вказати системі, що саме ми хочемо відстежувати - файл повністю, його частину або навіть окремі рядки.
Щоб додати потрібні частини, скористаємося командою add. З її допомогою ми можемо внести стільки відслідковуваних частин файлу, скільки нам необхідно. Після того, як ми створили цей своєрідний шаблон відстеження, фіксуємо його командою commit. Тепер система знає, що потрібно відстежувати.
У нашому прикладі мова йде про hello.txt. Додамо його:
$ git add hello.txt
Якщо ми хочемо додати до списку відстеження весь вміст директорії, набираємо:
$ git add -A
Перевіряємо статус і отримуємо відповідь:
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: hello.txt
Він означає, що система розуміє, що ми додали файл hello.txt до списку відстеження. На цьому етапі ми можемо видалити його з нього або модифікувати. Якщо все влаштовує, ми повинні зафіксувати наше рішення і змінити статус файлу з підготовленого на такий, що відстежується.
Коміт
Отже, ми підготували наш файл hello.txt до відстеження. Тепер ми можемо його комітити. Коміт - це стан сховища в певний момент часую
Для того, щоб зафіксувати зміну, потрібно її створити - раніше ми це зробили, підготувавши файл за допомогою команди git add. Значить, можна комітити:
$ git commit -m "Initial commit."
Ця команда створить коміт, де будуть відображені всі зміни з області підготовки. Ключ -m і повідомлення «Initial commit.» створює опис всіх змін.
Віддалений репозиторій
Комміт, створений нами, зберігається в репозиторії, прив'язаному до конкретної папки на нашому комп'ютері, тобто є локальним. Це корисно, якщо ми працюємо над проектом самостійно. Однак в більшості випадків виникає необхідність забезпечити доступ до результатів роботи або доставити код на сервер, де він буде виконуватися.
Як підключитися до віддаленого репозиторію?
Для завантаження даних в віддалений репозиторій спочатку потрібно до нього підключитися. У нашому прикладі ми використовуємо адресу https://github.com/tutorialzine/awesome-project, проте користувач може створити власний віддалений репозитарій на GitHub, BitBucket або іншому подібному сервісі. Це займає деякий час, проте в подальшому повністю себе виправдовує, тим більше, що подібні служби мають покрокові інструкції для правильного виконання потрібних дій.
Для того, щоб зв'язати створений нами локальний репозитарій з віддаленим, виконаємо таку команду:
# This is only an example. Replace the URI with your own repository address.
$ git remote add origin https://github.com/tutorialzine/awesome-project.git
Перший рядок нагадує нам, що URI репозиторію, який наведено в прикладі, потрібно змінити на свій.
Іноді буває так, що проект має кілька віддалених репозиторіїв - в такому випадку кожному з них присвоюється власне ім'я. Головний репозиторій прийнято називати origin.
Як відправити зміни в віддалений репозиторій?
Тепер, коли у нас в локальному репозитарії створений коміт і ми підключилися до віддаленого, можемо відправити його на сервер. Ми це будемо робити кожен раз, коли хочемо оновити дані в віддаленому репозиторії.
Відправка комітів здійснюється за допомогою команди push, яка має два параметри - ім'я віддаленого сховища (в нашому випадку origin) і гілку, в яку необхідно внести зміни (master - це гілка за замовчуванням для всіх репозиторіїв).
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 212 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/tutorialzine/awesome-project.git
* [new branch] master -> master
Якщо ми все зробили правильно, то відправлений файл hello.txt на віддаленому сервері ми можемо побачити за допомогою браузера. Важливий момент - деякі сервіси для відправки змін можуть вимагати додаткової аутентифікації.
Як клонувати віддалений репозиторій?
Якщо у інших користувачів виникла необхідність клонувати віддалений репозиторій, вони можуть отримати повністю працездатну копію за допомогою команди clone:
$ git clone https://github.com/tutorialzine/awesome-project.git
GitHub автоматично створить новий локальний репозиторій у вигляді віддаленого на власному сервері.
Як запросити зміни з віддаленого сховища?
У разі, якщо іншим користувачам немає необхідності робити клон віддаленого сховища, а потрібно просто отримати інформацію про зміни, це можна зробити за допомогою команди pull:
$ git pull origin master
From https://github.com/tutorialzine/awesome-project
* branch master -> FETCH_HEAD
Already up-to-date.
Вона завантажує нові зміни. Так як ми нічого нового не вносили з тих пір, як клонували проект, змін, доступних до завантаження, немає.
Створення гілок
Так як в роботі над проектом може брати участь кілька розробників, прийнято вносити зміни кожен в свою копію оригінальної версії коду. Це дозволяє зберігати робочий варіант без змін до тих пір, поки не буде прийнято рішення злити всі версії в одну.
Кожна така копія проекту називається гілкою - вона ізольована від інших і має власну історію. Наявність гілок дозволяє убезпечити проект, порівнювати різні версії, вести паралельну розробку.
Функція ігнорування
Git має вбудовану функцію .gitignore, за допомогою якої ми можемо запобігти випадковому потраплянню в git add непотрібних файлів, папок і директорій. Дуже часто до такого переліку потрапляють такі дані:
- Логи;
- Артефакти систем збірки;
- Папки node_modules в проектах node.js;
- Папки, створені IDE, наприклад, Netbeans або IntelliJ;
- Різноманітні замітки розробника.
Працює функція .gitignore дуже просто:
- Створюємо вручну файл під назвою .gitignore і зберігаємо його в директорію проекту.
- Всередині файлу перераховуємо назви файлів / папок, які потрібно ігнорувати, кожне з нового рядка.
- Файл .gitignore додаємо, комітимо і відправляємо на сервер, як і будь-який інший файл в проекті. Приклад виключення перерахованих вище файлів виглядає так:
*.log
build/
node_modules/
.idea/
my_notes.txt
Слеш позначає ігнорування директорій і всього їх вмісту, зірочка - шаблон.
Висновок
Отже, ми коротко ознайомилися з основними функціями git. Вони далеко не вичерпують всі можливості цієї системи і залишають великий простір для самовдосконалення.
0 комментариев
Добавить комментарий