Пошук уроків, статей та іншого контенту
Освоїте перемикання між гілками та створення нової гілки безпосередньо під час перемикання.
git switchКоманда git switch призначена для перемикання між гілками Git.
Після перемикання:
Git змінює поточну гілку;
файли робочої директорії оновлюються відповідно до цієї гілки;
нові коміти створюються вже в обраній гілці.
Щоб побачити поточну гілку та список усіх локальних гілок, виконайте:
git branchПоточна гілка позначається символом *.
Наприклад:
* main
feature/login
bugfix/headerУ цьому випадку поточною є гілка main.
Для перемикання на гілку використовуйте команду:
git switch назва-гілкиНаприклад:
git switch feature/loginПісля цього Git перемкнеться на гілку feature/login.
Перевірити результат можна командою:
git branchАбо за допомогою:
git statusПриклад повідомлення:
On branch feature/login
nothing to commit, working tree cleanЦе означає, що ви перебуваєте в гілці feature/login, а робоча директорія не має незбережених змін.
Якщо потрібної гілки ще немає, її можна створити й одразу зробити поточною за допомогою параметра -c:
git switch -c назва-нової-гілкиНаприклад:
git switch -c feature/profileЦя команда виконує дві дії:
створює гілку feature/profile від поточного коміту;
перемикається на цю гілку.
Після виконання команди всі нові коміти створюватимуться у feature/profile.
Перевірити поточну гілку:
git statusРезультат:
On branch feature/profile
nothing to commit, working tree cleanНижче наведено типовий сценарій роботи з гілками:
# Перевіряємо поточну гілку
git status
# Створюємо нову гілку для нової функції та перемикаємося на неї
git switch -c feature/search
# Створюємо файл із прикладом змін
printf "Пошук товарів\n" > search.txt
# Додаємо файл до індексу
git add search.txt
# Створюємо коміт у новій гілці
git commit -m "Add product search"
# Повертаємося до основної гілки
git switch main
# Перевіряємо список гілок
git branchПісля перемикання на main файл search.txt може зникнути з робочої директорії, якщо його немає в цій гілці. Це очікувана поведінка: кожна гілка має власний стан файлів.
Щоб знову побачити файл і продовжити роботу над функцією, перемкніться назад:
git switch feature/searchGit може не дозволити перемикання, якщо незбережені зміни у файлах будуть перезаписані в іншій гілці.
Наприклад, якщо ви змінили файл, але ще не створили коміт, під час перемикання можна отримати повідомлення про помилку:
error: Your local changes to the following files would be overwritten by checkoutУ такій ситуації спочатку потрібно визначити, що робити зі змінами:
створити коміт;
тимчасово зберегти зміни;
скасувати зміни, якщо вони більше не потрібні.
Найпростіший варіант — завершити роботу комітом:
git add .
git commit -m "Save current changes"
git switch mainНе перемикайтеся на іншу гілку, не розуміючи, що станеться з незбереженими змінами.
Назва гілки має бути точною. Якщо гілки з такою назвою не існує, команда завершиться помилкою:
git switch feature/unknownЩоб переглянути доступні локальні гілки:
git branchПісля цього скопіюйте потрібну назву та використайте її в git switch.
git switch і git switch -cКоманди мають різне призначення:
git switch feature/loginПеремикається на вже наявну гілку feature/login.
git switch -c feature/loginСтворює нову гілку feature/login і одразу перемикається на неї.
Параметр -c означає «create» — «створити».
Якщо гілка з такою назвою вже існує, команда з -c завершиться помилкою. У такому випадку потрібно використовувати команду без -c:
git switch feature/loginДля виконання окремої задачі зазвичай створюють нову гілку від поточної:
git switch main
git switch -c feature/contact-formПісля цього можна змінювати файли та створювати коміти:
git add .
git commit -m "Add contact form"Щоб повернутися до основної гілки:
git switch mainЩоб знову продовжити роботу над задачею:
git switch feature/contact-form-c для вже наявної гілкиПомилково:
git switch -c mainЯкщо гілка main уже існує, Git не створить її повторно.
Правильно:
git switch mainГілки feature/login і features/login — це різні гілки. Перевіряйте назви командою:
git branchПеред перемиканням перевіряйте стан робочої директорії:
git statusЯкщо є зміни, вирішіть, чи потрібно створити коміт, чи зберегти їх іншим способом.
Коміт, створений у гілці feature/search, не стає автоматично частиною main. Після перемикання на main цього коміту там може не бути.
Кожна гілка має власну історію комітів.
git switch назва-гілки перемикає на наявну гілку.
git switch -c назва-гілки створює нову гілку та одразу перемикається на неї.
Поточну гілку можна перевірити командами git branch або git status.
Перед перемиканням варто перевірити незбережені зміни.
Коміти створюються в тій гілці, яка є поточною під час виконання git commit.