Вчимося працювати з Git: основи конфігурації, гілки, додавання файлів та директорій

Анастасія Гордєєва

Git — це найпопулярніша CVS Concurrent Versions System) — система контролю версій прямо зараз, яка дозволяє відстежувати історію розробки і спільно працювати.

Він швидкий і прозорий, підходить як для маленьких, так і великих проєктів.

Якщо ви тільки вчитеся програмувати — вивчайте Git та викладайте код на GitHub щодня. Порада незмінна — які б мови чи фреймворки не вивчали. Далі надаємо слово фронтенд-розробниці у Wix Анастасії Гордєєвій.

Основи конфігурації Git

Для того, щоб додати гіт до свого проекту, треба відкрити термінал в корні проекту і виконати команду git init. Вона створює папку .git, яка має в собі сховище та деякі інші конфігурації для гіту.

Ці конфігурації ми можемо налаштовувати. Наприклад, можемо вказати своє їм’я та пошту, щоб потім можна було зрозуміти, що це саме ми внесли певні зміни в коді. Це робиться наступними командами:

  • git config user.name — ваше Ім’я – імя автора змін;
  • git config user.email — ваша пошта.

Для того, щоб подивитися конфігурацію гіта, виконайте у терміналі отаку команду:git config --list .

Git дозволяє ставити конфігурації на різних рівнях:

  • на рівні системи, тобто для всіх користувачів даного комп’ютера (прапорець --system);
  • глобальні для конкретного користувача (--global);
  • локальні для конкретного проекту (--local – стоїть по дефолту);

Локальні налаштування живуть в папці проекту в файлі .git/config. Глобальні — в домашній дирикторії в файлі ~/.gitconfig.

Системні зберігаються в /etc/gitconfig. Якщо гіту треба знайти значення якогось параметра, він спочатку шукає його локально, потім глобально на рівні юзера, а потім на рівні системи.

Тобто,  нам можливо було б краще задати ім’я та пошту на рівні користувача, щоб вони відображались в усіх наших проектах: git config --global user.name. Зайві локальні параметри можна прибрати за допомогою:

  • git config --unset user.name ;
  • git config --remove-section user (видаляє весь неймспейс user, а не тільки user.name).

Або можна відкрити файл конфігурації і відредагувати його напряму.

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

Як створювати аліаси:

  • git config --global alias.c ‘config –global’ — тепер ми можемо викликати цю команду просто через git c;
  • git config alias.ac ‘!git add .; git commit -m’ — тепер така велика команда викликається просто через git ac;
  • git config --global --unset alias.ac – прибираємо аліас.

Як зберегти зміни у Git

Ми працювали над проектом і хочемо зберегти змінені файли. Для цього треба додати їх до гіт. Це робиться в два етапи:

  1. Index – список файлів в робочій директорії, які гіт відслідковує. Також індекс є проміжним сховищем змін. Коли ми хочемо внести якісь зміни в гіт, ми спочатку додаємо їх в індекс.
  2. Repository – повна історія розробки проекту. Щоб гіт почав відслідковувати файл: git add fileName.js (додає файл в index гіту).

Щоб остаточно зберегти зміни в repository: git commit

Тепер гіт очікує від нас опис коміту, тобто розповідь про зміни, які ми внесли.

Перша строчка є заголовком коміту — вона повинна стисло але повно відображати суть змін. Після цього ми залишаємо пусту строку і можемо додати ще детальний опис. Всі строчки, що починаються з # в текстовому редакторі (або терміналі), що відкрився, є коментарями. Вони автоматично згенеровані гітом як підказки і будуть проігноровані, коли ми збережемо опис коміту. Для збереження, нам просто треба зберегти текст в редакторі і закрити його.

Після цього в терміналі ми побачимо короткий опис коміту та його хеш. Це строка-ідентифікатор коміту, по якому ми завжди зможемо побачити, які зміни були внесені на цьому етапі.

Заголовок коміту можна також додавати прямо в терміналі. Для цього виконаємо команду git commit -m ‘тут наш опис’ .

В гіт можна слідкувати за статусом проекту та змін за допомогою команди: git status.

Вона може вивести в терміналі декілька меседжів.

nothing to commit, working tree clean. Це означає, що поточний стан робочої директорії, індекса і репозиторія відповідають один одному. Тобто в гіт вже збережені всі стани проекту.

untracked files — гіт не відслідковує якісь зміни, треба виконати команду гіт ад

changes to be committed — гід відслідковує зміни, але вони ще не збережені в репозиторій. Треба виконати команду гіт коміт.

Додавання файлів та директорій, коміти

Якщо ми створимо пусту папку та захочему її додати в гіт – нічого не трапиться. Історично так скалося, що гіт не бачить пустих директорій. Зазвичай, якщо треба додати пусту папку в гіт, в ній створюють файл .gitkeep.

Для того, щоб додати всі модифіковані файли в індекс гіту одразу, ми можемо виконати наступну команду: git add .

Для того, щоб зайві файли (конфігурації, нод модулі, ключі) не додавалися цією командою, в корні проекта можна створити файл .gitignore. Тут ми вказуєм, які файли та директорії ігнорувать, наприклад пишемо ‘node_modules/’. Навіть якщо якийсь файл лежить в .gitignore, ми можемо заставити гіт його додати за допомогою прапорця --force (або -f).

Після того, як ми додали в індекс всі файли, які хочемо зберегти в гіт – ми робимо коміт. Важливо, щоб один коміт мав одну конкретну ціль. Наприклад: додавання лоадеру, фікс бага, реверт фічі. Тобто, як правило, гарні коміти — невеликі і атомарні.

В різних командах є різні конвеншони для назви комітів. Я зазвичай користуюсь цим.

Якщо нам не потрібно зберігати зміни в два етапи (тобто спочатку додавати в індекс через git add, а потім комітити через  git commit) –  ми можемо це зробити однією командою, додавши прапорець :

git commit -am ‘опис коміту’

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

Гілки

Гілка — це ізольований потік розробки, в якому можна робити коміти так, щоб вони не впливали на інші потоки.

Зазвичай, основна гілка — це master. Додаткові гілки створюються для розробки окремого функціоналу, для іншого розробника, для релізу. Потім зміни в них ми можемо або об’єднати з master, або з легкістю видалити без впливу на основний потік розробки.

У папці .git є файл HEAD, який відслідковує, на якій гілці ми знаходимось зараз.

Для перегляду поточних гілок, скористайтеся командою git branch.

Для того, щоб створити нову гілку: git branch назва-гілки.

Щоб розробляти в новій гілці, нам треба на неї переключитися (зробити так, щоб на неї вказував HEAD), виконавши команду git checkout назва-гілки.

Ці дві команди можна об’єднати в одну: git checkout -b назва-гілки.

Часто виникають ситуації, що ми робили зміни в одній гілці, а нам терміново треба переключитися на іншу. Що робити з незакоміченими змінами?

Якщо нам не треба зберігати ці зміни, можна виконати команду git checkout -f master.

А якщо зміни потрібно зберегти, скористайтеся командою git stash.

Ця команда збирає незакомічені зміни і архівує в гіт. Для того, щоб їх повернути (це можна зробити в будь-якій гілці): git stash pop .

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

Останні статті

IT в Україні йде до свого фінального кінця. І потраплятимуть туди виключно за покликом душі

Коротко про українську IT-сферу у 2024 році Це коли на одну вакансію Middle розробника по…

26.03.2024

Блокчейн-розробка сьогодні: зарплати і перспективи на ринку праці

Формування криптовалютної галузі в Україні почалося ще у 2014 – саме тоді з'явилися перші стартапи,…

18.03.2024

Скільки рішень ухвалює розробник? Погляд новачка, який запускає продукт

Автор цього блогу — Python-девелопер Сергій Солдатов, який вирішив створити досить унікальний продукт. І це…

12.03.2024

Чи треба готуватись до співбесіди?

Думки шукачів діляться на: «так, однозначно» і «ні, не вартує, я все і так про…

04.03.2024

Відкладаєте до останнього? Що таке «синдром студента» і як з ним боротися

Синдром студента — це форма прокрастинації, яка полягає в тому, що людина, якій дали завдання,…

23.02.2024

Як вимірювати успіх? Топ-5 метрик для продакт-менеджерів в SaaS

Працюючи у сфері SaaS, продакт-менеджери мають ключову роль у визначенні та вдосконаленні продукту. Для ефективного…

19.02.2024