Що потрібно знати про GIT, щоб не було соромно
August 2021 // 4 хвилини на читання // 205 переглядів
Git можна порівняти з англійською мовою в програмуванні: не важливо якою мовою ти пишеш свій код, git — та штука, яка буде використовуватися повсюдно.
Як і завжди, я пишу цю нотатку тільки для того, щоб структурувати, в першу чергу, свої знання, але якщо вона буде корисна для когось із 120 читачів, які щодня відвідують цей блог (за інформацією з Google аналітики), я буду тільки радий!
Що таке git?
Щоб зрозуміти це, можемо уявити ситуацію, коли вам потрібно відредагувати будь-який важливий файл, при цьому ви хочете зберегти його копію, щоб у будь-який момент повернутися до початкової точки. Як ми вчинимо в цій ситуації? Я пропоную створити папку, назвати її backups і зберігати туди всі копії редагованих файлів. Через деякий час ми виявимо, що файл, який ми хочемо, в черговий раз, зберегти, вже є в нашій папці, тому ми перейменуємо знову додаваний файл так, щоб його можна було ідентифікувати всередині нашої папки з бекапами. Працюючи за таким принципом, ми сміливо можемо редагувати будь-який файл нашого проекту, не боячись втратити архі-важливі рядки коду. Ми в будь-який момент можемо відновити що завгодно з наших бекапів!
Власне git працює за аналогічним принципом. Він створює каталог і зберігає там версії наших файлів. Різниця в тому, що git не зберігає повністю весь файл, а тільки зміни в ньому. З цієї причини він працює дуже швидко.
Звичайно, насправді все виглядає складніше, ніж описано вище. Вам доведеться розібратися з тим, що таке коміти, гілки, як їх об’єднувати (злиття гілок), і в цілому — зрозуміти весь принцип підходу роботи через git. Нижче я постараюся поверхнево описати основні терміни, але мета цієї статті — не навчити git-у, а створити розуміння у читача що це таке і як воно працює.
Основні терміни git
Git репозиторій — папка, в якій знаходяться файли, конфіги та інші дані, які потрібні для роботи з git.
Віддалений git репозиторій — копія репозиторію, яка зберігається віддалено (Github, Gitlab, Bitbacket). Віддалені репозиторії потрібні якщо над проектом працює більше одного розробника.
Коміт — фіксація і збереження змін в репозиторій. По суті — збережена копія файлів. До будь-якого коміту в git можна повернутися в будь-який час.
Гілка — копія репозиторію, яка може розвиватися паралельно. Кожен git репозиторій містить щонайменше одну гілку (зазвичай — master).
Злиття (merge) — злиття змін з однієї гілки в іншу в рамках одного репозиторію.
Клонування — копіювання віддаленого репозиторію на локальний комп’ютер.
Список GIT команд, якими я користуюся щодня
Нижче я перерахую ті команди, якими я користуюся кожен день. Варто зазначити, що якщо щось йде не так або мені потрібні дії, які не входять в цей список, доводиться гуглити, але найчастіше все добре; Думаю, цими командами користується багато розробників, тому їх варто запам’ятати 🙂
Створення нової гілки і перехід до неї
Коли на проекті з’являється нове завдання — я повинен створити нову гілку і вирішити завдання в ній.
git checkout -b <назва_нової_гілки>
Вибір файлів для коміту
Для вибору файлів, які будуть включені в коміт можна застосувати команду, яка додасть всі змінені файли для відстеження в GIT:
git add .
А для вибору конкретного файлу можна передати шлях до цього файлу замість точки:
git add /шлях/до/файлу/який/включаємо/в/коміт
Командою для додавання файлів у коміт я користуюся вкрай рідко, тому що віддаю перевагу користуватися графічним інтерфейсом, де можна дуже легко вибрати файли, які потрібно додати.
Збереження коміту
Після додавання файлів на відстеження, можна зафіксувати зміни, зберігши їх у коміт (закомітивши).
Для виконання даної дії можна використовувати команду:
git commit -m "Опис змін у коміті"
Скасування всіх змін
Якщо я закомітив зайве, скасувати цю дію можна за допомогою команди reset. Є кілька типів reset: найчастіше я користуюся soft або hard. Від типу reset залежить що станеться зі змінами в коміті:
- soft — всі зміни будуть збережені, а коміт буде видалений;
- hard — коміт і зміни в ньому будуть видалені так, що їх не повернути.
git reset --soft
Перегляд недавніх комітів
Для перегляду історії комітів можна використовувати команду, яка виведе автора, дату і коментарі до комітів
git log
Отримання змін з віддаленої гілки
Коли інші розробники вносять зміни в проект — версія віддаленого і локального репозиторіїв може не збігатися. Для отримання останньої версії з віддаленого репозиторію можна використовувати команду, яка отримає і об’єднає всі зміни між репозиторіями.
git pull
Відправка комітів на віддалену гілку
Коли завдання вирішене, протестоване і готове в репозиторій, я користуюся командою, яка завантажить всі зміни в локальній версії репозиторію на віддалений сервер
git push
Якщо я працюю один у своїй гілці, цього достатньо для відправки. Але якщо в одній працюють кілька розробників, краще використовувати git pull перед git push, щоб переконатися, що конфліктів при відправці не виникне.
А взагалі
Як мені здається, краще використовувати графічний інтерфейс для роботи з GIT, вам не доведеться запам’ятовувати команди для виконання рутинних дій. Відмінний приклад таких програм: SourceTree або вбудовані інструменти для роботи з GIT у вашій IDE.