Тепер, коли ви вже вмієте створювати гілки, зливати їх та видаляти, розгляньмо те, як ними управляти, та на інструменти, які можуть в цьому допомогти.
Команда git branch
насправді вміє більше ніж просто створювати та знищувати гілки.
Запустіть її без параметрів і ви побачите просто список ваших гілок:
$ git branch
iss53
* master
testing
Зверніть увагу на символ *
перед master
: це вказівник на вашу поточно вибрану гілку (тобто ту, на котру вказує HEAD
).
Це означає, що якщо ви зараз захочете зробити коміт, master
оновиться вашими новими змінами.
Щоб побачити ваші останні коміти - запустіть git branch -v
:
$ git branch -v
iss53 93b412c fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 add scott to the author list in the readmes
Опції --merged
та --no-merged
корисні для фільтрування списку гілок залежно від того чи вони були злиті з поточною гілкою.
Для списку гілок, що були злиті з поточною гілкою виконайте git branch --merged
:
$ git branch --merged
iss53
* master
Ви бачите iss53
в цьому списку тому, що раніше її злили з master
.
Взагалі, гілки без *
із цього списку можна вже видаляти (за допомогою git branch -d
), адже ми вже інтегрували ті зміни, тому не втратимо їх.
Команда git branch --no-merged
покаже гілки, які ви не зливали з поточною гілкою:
$ git branch --no-merged
testing
Тут ви бачите свою іншу гілку.
Оскільки дана гілка містить роботу, що не зливалася, спроба видалити її за допомогою git branch -d
не буде успішною:
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
Якщо ж ви дійсно впевнені в тому, що гілка вам не потрібна і всі зміни з неї можна втрачати, можна змусити Git це зробити за допомогою параметра -D
. Про що Git вам і повідомляв з попередньої спроби.
Tip
|
Описані вище опції Завжди можна додати ще один аргумент, щоб дізнатися про стан злиття відносно якоїсь іншої гілки — немає потреби спочатку на неї переходити. Наприклад, що не було залите до гілки $ git checkout testing
$ git branch --no-merged master
topicA
featureB |