Git – це розподілена система управління версіями, призначена для відстеження змін у вихідному коді ПЗ. Розроблена Лінусом Торвальдсом у 2005 році, Git стала одним із найпопулярніших інструментів серед розробників завдяки своїй ефективності та гнучкості. Він дає змогу розробникам працювати над проєктами в колективі, відстежувати зміни в коді, керувати гілками розробки та синхронізувати свою роботу з іншими учасниками проєкту. Відповідно, знання Git команд є ключовою навичкою для будь-якого програміста, який хоче ефективно керувати версіями свого коду.
На курсі Java Tools від компанії FoxmindED студенти, зокрема, вчаться встановлювати git, працювати з репозиторієм і створювати там персональний проєкт.
Основи роботи
Перш ніж приступити до використання Git, необхідно встановити його на свій комп’ютер. Для цього можна скористатися офіційним сайтом (https://git-scm.com/) і завантажити інсталяційний пакет для вашої ОС. Після завантаження і запуску інсталяційного пакета дотримуйтесь інструкцій установника.
Далі необхідно виконати початкове налаштування, встановивши своє ім’я користувача та адресу електронної пошти. Це дасть змогу Git правильно ідентифікувати вас як автора комітів. Для цього виконайте такі команди в терміналі (замінивши “Ваше ім’я” і “ваша@почта.com” на свої дані):
git config –global user.name “your name”
git config –global user.email “your@mail.com”
Розглянемо базові команди Git:
- git init – використовується для ініціалізації нового репозиторію. Виконання цієї команди в директорії проєкту створить приховану папку .git, яка міститиме всі дані Git, включно з історією змін та інформацією про гілки.
- git clone – використовується для клонування наявного репозиторію. Це дає змогу скопіювати весь репозиторій, включно з історією змін і даними про гілки, на ваш комп’ютер.
Не гайте часу!
git clone <URL репозиторію>
- git add – використовується для додавання файлів до індексу Git перед їх фіксацією. Це означає, що Git почне відстежувати зміни в цих файлах і включатиме їх у наступний коміт.
git add <ім’я файлу>
- git commit – використовується для фіксації змін у репозиторії. Коміт зберігає зміни у вашому сховищі та додає їх в історію проєкту. Кожен коміт супроводжується повідомленням, що описує внесені зміни.
git commit -m “Опис внесених змін”
Ці команди дають змогу розпочати роботу із системою керування версіями;
Команди для роботи з гілками
Система управління версіями надає низку команд для управління гілками, що дає змогу ефективно організовувати розробку та керувати історією змін проєкту:
- git branch – команда використовується для перегляду списку гілок у репозиторії та створення нових гілок.
# Створення нової гілки
git branch <ім’я гілки>
- git checkout – використовується для перемикання між гілками. Вона також може бути використана для створення нової гілки і перемикання на неї одночасно.
# Перемикання на наявну гілку
git checkout <ім’я гілки>
# Створення нової гілки та перемикання на неї
git checkout -b <new branch name>
- git merge – використовується для злиття змін з однієї гілки в іншу. Це дає змогу об’єднати зміни, внесені в різних гілках, в одну загальну.
# Злиття змін із зазначеної гілки
git merge <гілка, що вливається>
Як це працює? Припустимо, у вас є проєкт і ви хочете додати нову функціональність. Ви можете створити нову гілку для роботи над цією функціональністю:
git checkout -b feature-new-functionality
Тепер ви перебуваєте в новій гілці feature-new-functionality і можете почати роботу.
Або, скажімо, ви хочете повернутися до основної гілки, щоб внести деякі виправлення:
git checkout main
Тепер ви переключилися на гілку main і можете вносити зміни в основний код проєкту.
Після того як ви закінчите роботу над новою функціональністю в гілці feature-new-functionality, ви можете влити ці зміни назад в основну гілку. Тоді ми робимо наступне:
git checkout main
git merge feature-new-functionality
Це об’єднає зміни з гілки feature-new-functionality в основну гілку main.
Команди для роботи з віддаленими репозиторіями
Git також дає змогу працювати з віддаленими репозиторіями. Для зв’язування локального репозиторію з віддаленим використовується команда git remote add. Для обміну даними з віддаленим репозиторієм – команди git fetch, git pull і git push.
курси Junior саме для вас.
Наприклад, щоб завантажити зміни з віддаленого репозиторію, використовуємо:
git fetch origin
Або, щоб відправити свої зміни на віддалений репозиторій:
git push origin main
Скасування змін і виправлення помилок
Іноді виникає необхідність скасувати зроблені зміни або виправити помилки. Для цих цілей існують команди git revert і git reset. Git revert створює новий коміт, який скасовує зміни зазначеного коміту, тоді як git reset дає змогу відкотити зміни в зазначений коміт, видаляючи всі наступні.
Наприклад, щоб скасувати останній коміт і зберегти зміни в робочій директорії, можна використовувати команду:
git reset HEAD~1
Коли використовувати кожну із зазначених команд?
- git revert – якщо вам потрібно скасувати зміни, які були вже опубліковані або перебувають у загальному доступі для інших членів команди.
- git reset – у випадку, коли вам потрібно внести зміни в локальну історію комітів. Однак будьте обережні, коли використовуєте git reset –hard, оскільки це може призвести до втрати даних без можливості відновлення.
Оптимізація роботи
Для ефективної роботи з Git можна використовувати такі команди:
- git stash – команда використовується для тимчасового збереження змін, які ви не бажаєте фіксувати в комітах прямо зараз. Це може бути корисно, наприклад, коли вам потрібно переключитися на інше завдання, але ви не закінчили поточну роботу.
- git clean – команда дає змогу очистити робочу директорію від файлів, що не відстежуються Git, тобто не додані в індекс і не закоммічені. Перед виконанням цієї команди слід уважно перевірити список файлів, які будуть видалені.
git clean -n # Show which files will be deleted (dry-run)
git clean -f # Actual file deletion
- git tag – теги (git tag) дозволяють маркувати важливі моменти в історії проєкту. Команда git tag <name tag> створює легковагий тег, який вказує на поточний коміт HEAD. Також можна використовувати опцію -a для створення анотованого тега, який містить додаткову інформацію, таку як повідомлення та автор.
git tag <tag name> # Creating a lightweight tag
git tag -a <tag name> -m “Tag message” # Creating an Annotated Tag
Після створення тега ви можете звертатися до нього в майбутньому, використовуючи його ім’я. Наприклад, щоб переключитися на певний тег, можна використовувати команду:
git checkout <tag name>
Ці команди допомагають оптимізувати роботу і роблять управління версіями проєкту ефективнішим і зручнішим.
Робота зі змінами та комітами
Команди git log та git diff надають можливість перегляду історії змін та їх порівняння між комітами. Це особливо корисно під час пошуку та виправлення помилок в історії комітів.
Щоб знайти і виправити помилки в історії комітів, корисно використовувати команди git bisect, git rebase тощо.
- git bisect – використовується для двійкового пошуку помилок в історії комітів. Він автоматично виконує перехід між ними, даючи вам змогу швидко знайти той, у якому виникла помилка.
- git rebase – використовується для перебазування комітів на іншу гілку або базовий коміт. Це може бути корисно для впорядкування історії комітів або об’єднання набору змін в один коміт.
Поради щодо виправлення помилок в історії комітів:
- Будьте обережні з перезаписом історії: він може бути корисним, але також може призвести до втрати даних. Переконайтеся, що ви розумієте наслідки своїх дій, перш ніж використовувати команди, такі як git rebase.
- Користуйтеся інструментами для аналізу історії: використовуйте команди git log і git diff.
- Тестуйте зміни: перш ніж зробити коміт, переконайтеся, що ваш код працює коректно, і проведіть тестування, щоб уникнути появи помилок в історії.
Розширені можливості
Крім основних команд, Git пропонує більш просунуті можливості, такі як git rebase (git rebase <target_branch>) для перебазування гілок і git bisect для пошуку помилок:
git bisect start
git bisect bad
git bisect good <good_commit>
Команда git bisect start запускає процес пошуку помилки, а git bisect bad позначає поточний коміт як такий, що містить помилку. Потім ми вказуємо коміт, у якому помилка відсутня, за допомогою git bisect good. Git автоматично переходить до інших комітів посередині, щоб швидко знайти той, який призвів до помилки.
Існує широкий спектр інструментів і розширень, які значно покращують досвід роботи з Git. Вони полегшують використання цієї системи контролю версій і надають додаткові функціональні можливості. Деякі з цих інструментів включають:
- GitHub Desktop – графічний інтерфейс для роботи з репозиторіями Git і GitHub, який полегшує процес клонування, комітів, злиття тощо.
- GitKraken – також графічний клієнт, який пропонує широкі можливості управління репозиторіями та переглядом історії комітів.
- GitLab і Bitbucket – веб-платформи для хостингу та управління Git-репозиторіями, що надають широкий набір функцій для спільної роботи над проектами.
- Git Extensions – розширення для Visual Studio.
Ці інструменти та розширення полегшують роботу, надаючи додаткові можливості та інтеграцію з іншими середовищами розробки та сервісами хостингу репозиторіїв.
Висновок
Знання і правильне використання команд Git відіграють ключову роль в успішній роботі над проектами. У цій статті ми розглянули основні команди, необхідні для ефективного управління версіями коду. Рекомендуємо продовжити їх вивчення і поглибити свої знання, оскільки це приносить значні переваги в розробці програмного забезпечення.
Чи усі з наведених у статті команд ви знали і застосовували? Поділіться досвідом у коментарях нижче!