Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.44.1 → 2.49.1 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.41.1 → 2.42.4 no changes
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 no changes
-
2.40.0
2023-03-12
- 2.39.4 → 2.39.5 no changes
-
2.39.3
2023-04-17
- 2.38.1 → 2.39.2 no changes
-
2.38.0
2022-10-02
- 2.37.1 → 2.37.7 no changes
-
2.37.0
2022-06-27
- 2.36.1 → 2.36.6 no changes
-
2.36.0
2022-04-18
- 2.35.1 → 2.35.8 no changes
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 no changes
-
2.34.0
2021-11-15
- 2.33.2 → 2.33.8 no changes
-
2.33.1
2021-10-12
- 2.31.1 → 2.33.0 no changes
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 no changes
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 no changes
-
2.29.0
2020-10-19
- 2.28.1 no changes
-
2.28.0
2020-07-27
- 2.23.1 → 2.27.1 no changes
-
2.23.0
2019-08-16
- 2.22.2 → 2.22.5 no changes
-
2.22.1
2019-08-11
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 no changes
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 no changes
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 no changes
-
2.9.5
2017-07-30
- 2.8.6 no changes
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.5.6 no changes
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 no changes
-
2.0.5
2014-12-17
СИНОПСИС
git
branch
[--color
[=
<when>] |--no-color
] [--show-current
] [-v
[--abbrev=
<n> |--no-abbrev
]] [--column
[=
<options>] |--no-column
] [--sort=
<key>] [--merged
[<commit>]] [--no-merged
[<commit>]] [--contains
[<commit>]] [--no-contains
[<commit>]] [--points-at
<object>] [--format=
<format>] [(-r
|--remotes
) | (-a
|--all
)] [--list
] [<pattern>…]git
branch
[--track
[=
(direct
|inherit
)] |--no-track
] [-f
] [--recurse-submodules
] <branch-name> [<start-point>]git
branch
(--set-upstream-to=
<upstream>|-u
<upstream>) [<branch-name>]git
branch
--unset-upstream
[<branch-name>]git
branch
(-m
|-M
) [<old-branch>] <new-branch>git
branch
(-c
|-C
) [<old-branch>] <new-branch>git
branch
(-d
|-D
) [-r
] <branch-name>…git
branch
--edit-description
[<branch-name>]
ОПИС
Якщо вказано --list
, або якщо немає аргументів, що не є опціями, буде перераховано існуючі гілки; поточна гілка буде виділена зеленим кольором та позначена зірочкою. Будь-які гілки, витягнуті у зв’язаних робочих деревах, будуть виділені блакитним кольором та позначені знаком плюс. Опція -r
призведе до відображення списку гілок віддаленого відстеження, а опція -a
покаже як локальні, так і віддалені гілки.
Якщо задано <шаблон>, він використовується як шаблон оболонки для обмеження виводу до відповідних гілок. Якщо задано кілька шаблонів, гілка відображається, якщо вона відповідає будь-якому з шаблонів.
Зверніть увагу, що під час надання <шаблон> необхідно використовувати --list
; інакше команда може бути інтерпретована як створення гілки.
З параметром --contains
відображаються лише гілки, що містять іменований коміт (іншими словами, гілки, кінчики комітів яких є нащадками іменованого коміту), --no-contains
інвертує його. З параметром --merged
будуть перелічені лише гілки, об’єднані з іменованим комітом (тобто гілки, кінчики комітів яких доступні з іменованого коміту). З параметром --no-merged
будуть перелічені лише гілки, не об’єднані з іменованим комітом. Якщо аргумент <commit> відсутній, він за замовчуванням має значення HEAD
(тобто кінчик поточної гілки).
Друга форма команди створює новий заголовок гілки з назвою <назва-гілки>, який вказує на поточну HEAD
, або <початкову-точку>, якщо задано. Як окремий випадок, для <початкової-точки>, ви можете використовувати <rev-A>...
<rev-B> як скорочення для бази злиття <rev-A> та <rev-B>, якщо існує лише одна база злиття. Ви можете пропустити щонайбільше один з <rev-A> та <rev-B>, і в цьому випадку за замовчуванням використовується HEAD
.
Зверніть увагу, що це створить нову гілку, але не переключить на неї робоче дерево; використовуйте git
switch
<new-branch> для перемикання на нову гілку.
Коли локальна гілка запускається з гілки віддаленого відстеження, Git налаштовує гілку (зокрема, записи конфігурації branch.
<name>.remote
та branch.
<name>.merge
) таким чином, щоб git
pull
належним чином зливався з гілкою віддаленого відстеження. Цю поведінку можна змінити за допомогою глобального прапорця конфігурації branch.autoSetupMerge
. Цей параметр можна перевизначити за допомогою опцій --track
та --no-track
, а пізніше змінити за допомогою git
branch
--set-upstream-to
.
З опцією -m
або -M
, <old-branch> буде перейменовано на <new-branch>. Якщо <old-branch> мала відповідний reflog, вона перейменовується відповідно до <new-branch>, і створюється запис reflog для запам’ятовування перейменування гілки. Якщо <new-branch> існує, для примусового перейменування необхідно використовувати -M
.
Опції -c
та -C
мають точно таку ж семантику, як -m
та -M
, за винятком того, що замість перейменування гілки вона буде скопійована під новою назвою разом з її конфігурацією та рефлогом.
З опцією -d
або -D
, <назва-гілки> буде видалено. Ви можете вказати більше однієї гілки для видалення. Якщо гілка наразі має журнал перепису, то журнал перепису також буде видалено.
Використовуйте -r
разом з -d
для видалення гілок віддаленого відстеження. Зверніть увагу, що видаляти гілки віддаленого відстеження має сенс лише тоді, коли вони більше не існують у віддаленому репозиторії або якщо git
fetch
було налаштовано не отримувати їх знову. Дивіться також підкоманду prune
команди git-remote[1], щоб дізнатися, як очистити всі застарілі гілки віддаленого відстеження.
ОПЦІЇ
-
-d
-
--delete
-
Видалити гілку. Гілку необхідно повністю об’єднати з її гілкою upstream або з
HEAD
, якщо upstream не було встановлено за допомогою--track
або--set-upstream-to
. -
-D
-
Скорочення для
--delete
--force
. -
--create-reflog
-
Створити журнал записів гілки. Це активує запис усіх змін, внесених до посилання гілки, що дозволяє використовувати sha1-вирази на основі дати, такі як <назва-гілки>
@{yesterday}
. Зверніть увагу, що в нечистих репозиторіях журнали записів зазвичай увімкнено за замовчуванням параметром конфігураціїcore.logAllRefUpdates
. Заперечувана форма--no-create-reflog
лише перевизначає попереднє--create-reflog
, але наразі не скасовує налаштуванняcore.logAllRefUpdates
. -
-f
-
--force
-
Скинути <назва-гілки> до <початкова-точка>, навіть якщо <назва-гілки> вже існує. Без
-f
,git
branch
відмовляється змінювати існуючу гілку. У поєднанні з-d
(або--delete
) дозволяє видалення гілки незалежно від її статусу об’єднання, або від того, чи вказує вона на дійсний коміт. У поєднанні з-m
(або--move
) дозволяє перейменування гілки, навіть якщо нова назва гілки вже існує, те саме стосується-c
(або--copy
).Зверніть увагу, що
git
branch
-f
<назва-гілки> [<початкова-точка>], навіть з-f
, відмовляється змінювати існуючу гілку <назва-гілки>, яка витягнута з іншого робочого дерева, пов’язаного з тим самим репозиторієм. -
-m
-
--move
-
Перемістити/перейменувати гілку разом з її конфігурацією та перефлогом.
-
-M
-
Скорочення для
--move
--force
. -
-c
-
--copy
-
Скопіюйте гілку разом з її конфігурацією та рефлогом.
-
-C
-
Скорочення для
--copy
--force
. -
--color
[=
<when>] -
Виділіть поточні, локальні та віддалено відстежувані гілки кольором. Значення має бути
always
(за замовчуванням),never
абоauto
. -
--no-color
-
Вимкнути кольори гілок, навіть якщо у файлі конфігурації задано кольоровий вивід за замовчуванням. Те саме, що й
--color=never
. -
-i
-
--ignore-case
-
Сортування та фільтрація гілок не враховують регістр.
-
--omit-empty
-
Не друкуйте новий рядок після відформатованих посилань, де формат розгортається до порожнього рядка.
-
--column
[=
<опція>] -
--no-column
-
Відображати список гілок у стовпцях. Синтаксис опцій дивіться у змінній конфігурації
column.branch
.--column
та--no-column
без опцій еквівалентніalways
таnever
відповідно.Цей параметр застосовується лише в недетальному режимі.
-
--sort=
<ключ> -
Сортування на основі <ключ>. Додайте префікс
-
для сортування у порядку спадання значення. Ви можете використовувати опцію--sort=
<ключ> кілька разів, і в цьому випадку останній ключ стає первинним ключем. Підтримувані ключі такі ж, як у git-for-each-ref[1]. Порядок сортування за замовчуванням встановлюється на значення, налаштоване для змінноїbranch.sort
, якщо вона існує, або на основі повного імені посилання (включаючи префіксrefs/...
). Спочатку відображаються відокремленіHEAD
(якщо є), потім локальні гілки і, нарешті, гілки з віддаленим відстеженням. Див. git-config[1]. -
-r
-
--remotes
-
Перерахувати або видалити (якщо використовується з
-d
) гілки віддаленого відстеження. Поєднайте з--list
для відповідності необов’язковим шаблонам. -
-a
-
--all
-
Перелічіть як гілки віддаленого відстеження, так і локальні гілки. Поєднуйте з
--list
для відповідності необов’язковим шаблонам. -
-l
-
--list
-
Список гілок. З необов’язковим параметром <шаблон>..., наприклад,
git
branch
--list
maint-*'
, список лише тих гілок, що відповідають шаблону(ам). -
--show-current
-
Вивести назву поточної гілки. У відокремленому стані
HEAD
нічого не виводиться. -
-v
-
-vv
-
--verbose
-
У режимі списку, виведіть sha1 та рядок теми коміта для кожного head, разом із зв’язком з гілкою вище за тегом (якщо така є). Якщо вказано двічі, виведіть шлях до пов’язаного робочого дерева (якщо таке є) та назву гілки вище за тегом (див. також
git
remote
show
<remote>). Зверніть увагу, що шлях доHEAD
поточного робочого дерева не буде виведено (це завжди буде ваш поточний каталог). -
-q
-
--quiet
-
Бути тихішим під час створення або видалення гілки, пригнічуючи повідомлення, що не пов’язані з помилками.
-
--abbrev=
<n> -
У детальному списку, що показує назву об’єкта коміту, покажіть найкоротший префікс довжиною щонайменше <n> шістнадцяткових цифр, який унікально посилається на об’єкт. Значення за замовчуванням — 7, його можна змінити за допомогою опції конфігурації
core.abbrev
. -
--no-abbrev
-
Відображати повні sha1 у вихідному списку, а не скорочувати їх.
-
-t
-
--track
[=
(direct
|inherit
)] -
Під час створення нової гілки налаштуйте записи конфігурації
branch.
<name>.remote
таbranch.
<name>.merge
, щоб встановити конфігурацію відстеження "upstream" для нової гілки. Ця конфігурація вкаже git відображати зв’язок між двома гілками вgit
status
таgit
branch
-v
. Крім того, вона направляєgit
pull
без аргументів на витягування з upstream, коли нова гілка буде виведена.Точна гілка початкової точки вибирається залежно від необов’язкового аргументу:
-t
,--track
або--track=direct
означає використовувати саму гілку початкової точки як гілку початкової точки;--track=inherit
означає копіювати конфігурацію гілки початкової точки початкової точки.Змінна конфігурації
branch.autoSetupMerge
визначає, як повинні поводитисяgit
switch
,git
checkout
таgit
branch
, коли не вказано ні--track
, ні--no-track
:Параметр за замовчуванням,
true
, поводиться так, ніби--track=direct
було задано щоразу, коли початкова точка є гілкою віддаленого відстеження.false
поводиться так, ніби--no-track
.always
поводиться так, ніби--track=direct
.inherit
поводиться так, ніби--track=inherit
.simple
поводиться так, ніби--track=direct
було задано лише тоді, коли <початкова точка> є гілкою віддаленого відстеження, а нова гілка має таку ж назву, як і віддалена гілка.Дивіться git-pull[1] та git-config[1] для додаткового обговорення використання опцій
branch.
<name>.remote
таbranch.
<name>.merge
. -
--no-track
-
Не налаштовуйте конфігурацію "upstream", навіть якщо встановлено змінну конфігурації
branch.autoSetupMerge
. -
--recurse-submodules
-
ЦЕЙ ОПЦІЯ ЕКСПЕРИМЕНТАЛЬНА! Змушує поточну команду рекурсивно перетворюватися на підмодулі, якщо увімкнено
submodule.propagateBranches
. Див.submodule.propagateBranches
у git-config[1]. Наразі підтримується лише створення гілок.При використанні у створенні гілки, нова гілка <назва-гілки> буде створена в суперпроекті та всіх підмодулях у <початковій-точці> суперпроекту. У підмодулях гілка вказуватиме на коміт підмодуля в <початковій-точці> суперпроекту, але інформація про відстеження гілки буде налаштована на основі гілок та віддалених гілок підмодуля, наприклад,
git
branch
--recurse-submodules
topic
origin/main
створить гілку підмодуля "topic", яка вказує на коміт підмодуля в "origin/main" суперпроекту, але відстежує "origin/main" підмодуля. -
--set-upstream
-
Оскільки цей параметр мав заплутаний синтаксис, він більше не підтримується. Будь ласка, використовуйте замість нього
--track
або--set-upstream-to
. - -u <вище за течією>
- --set-upstream-to=<вище за течією>
-
Налаштуйте інформацію відстеження <назва-гілки> таким чином, щоб <вищепотокова> вважалася гілкою вищого рівня <назва-гілки>. Якщо <назва-гілки> не вказано, то за замовчуванням використовується поточна гілка.
-
--unset-upstream
-
Видалити інформацію про початковий рівень для <назва-гілки>. Якщо гілка не вказана, за замовчуванням використовується поточна гілка.
-
--edit-description
-
Відкрийте редактор і відредагуйте текст, щоб пояснити, для чого призначена гілка, щоб її використовували різні інші команди (наприклад,
format-patch
,request-pull
таmerge
(якщо увімкнено)). Можна використовувати багаторядкові пояснення. -
--contains
[<коміт>] -
Перераховувати лише гілки, що містять <commit> (
HEAD
, якщо не вказано). Має на увазі--list
. -
--no-contains
[<коміт>] -
Перелічувати лише гілки, що не містять <commit> (
HEAD
, якщо не вказано). Має на увазі--list
. -
--merged
[<коміт>] -
Перелічувати лише гілки, підказки яких доступні з <commit> (
HEAD
, якщо не вказано). Має на увазі--list
. -
--no-merged
[<коміт>] -
Перелічувати лише гілки, поради яких недоступні з <commit> (
HEAD
, якщо не вказано). Має на увазі--list
. - --points-at <об'єкт>
-
Перелічувати лише гілки <об’єкта>.
-
--format
<формат> -
Рядок, який інтерполює %(ім'я поля) з посилання на гілку, що відображається, та об’єкта, на який воно вказує. <формат> такий самий, як і у git-for-each-ref[1].
- <назва-гілки>
-
Назва гілки для створення або видалення. Нова назва гілки має пройти всі перевірки, визначені в git-check-ref-format[1]. Деякі з цих перевірок можуть обмежувати кількість символів, дозволених у назві гілки.
- <start-point>
-
Новий заголовок гілки вказуватиме на цей коміт. Його можна вказати як назву гілки, ідентифікатор коміту або тег. Якщо цей параметр пропущено, замість нього буде використано поточний
HEAD
. - <стара гілка>
-
Назва існуючої гілки. Якщо цей параметр пропущено, замість нього буде використано назву поточної гілки.
- <нова гілка>
-
Нова назва існуючої гілки. Застосовуються ті ж обмеження, що й для <назва-гілки>.
КОНФІГУРАЦІЯ
pager.branch
враховується лише під час перерахування гілок, тобто коли використовується або мається на увазі --list
. За замовчуванням використовується пейджер. Див. git-config[1].
Все, що знаходиться вище цього рядка в цьому розділі, не включено до документації git-config[1]. Наступний вміст такий самий, як і той, що знаходиться там:
Warning
|
Missing See original version for this content. |
ПРИКЛАДИ
- Почати розробку з відомого тегу
-
$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6 $ cd my2.6 $ git branch my2.6.14 v2.6.14 (1) $ git switch my2.6.14
-
Цей крок та наступний можна об’єднати в один за допомогою "checkout -b my2.6.14 v2.6.14".
-
- Видалити непотрібну гілку
-
$ git clone git://git.kernel.org/.../git.git my.git $ cd my.git $ git branch -d -r origin/todo origin/html origin/man (1) $ git branch -D test (2)
-
Видаліть гілки віддаленого відстеження "todo", "html" та "man". Наступні команди
git
fetch
абоgit
pull
знову їх створить, якщо ви не налаштуєте їх інакше. Див. git-fetch[1]. -
Видалити гілку "test", навіть якщо гілка "master" (або будь-яка гілка, що наразі вивантажена) не містить усіх комітів з гілки test.
-
- Перелік гілок з певного віддаленого сервера
-
$ git branch -r -l '<remote>/<pattern>' (1) $ git for-each-ref 'refs/remotes/<remote>/<pattern>' (2)
-
Використання
-a
призведе до об’єднання <remote> з будь-якими локальними гілками, до яких випадково додано префікс з тим самим шаблоном <remote>. -
for-each-ref
може приймати широкий спектр опцій. Див. git-for-each-ref[1]
-
Зазвичай шаблони потребують цитування.
НОТАТКИ
Якщо ви створюєте гілку, на яку хочете негайно перейти, простіше використовувати команду git
switch
з її опцією -c
, щоб зробити те саме за допомогою однієї команди.
Опції --contains
, --no-contains
, --merged
та --no-merged
виконують чотири пов’язані, але різні функції:
-
--contains
<commit> використовується для пошуку всіх гілок, яким потрібно буде приділити особливу увагу, якщо <commit> буде перебазовано або змінено, оскільки ці гілки містять вказаний <commit>. -
--no-contains
<commit> є інверсією цього, тобто гілки, які не містять зазначеного <commit>. -
--merged
використовується для пошуку всіх гілок, які можна безпечно видалити, оскільки ці гілки повністю містяться вHEAD
. -
--no-merged
використовується для пошуку гілок, які є кандидатами для об’єднання зHEAD
, оскільки ці гілки не повністю містяться вHEAD
.
Під час поєднання кількох фільтрів --contains
та --no-contains
відображаються лише посилання, які містять принаймні один з комітів --contains
та не містять жодного з комітів --no-contains
.
Під час об’єднання кількох фільтрів --merged
та --no-merged
відображаються лише посилання, досяжні принаймні з одного з комітів --merged
та з жодного з комітів --no-merged
.
ДИВ. ТАКОЖ
git-check-ref-format[1], git-fetch[1], git-remote[1], "Розуміння історії: Що таке гілка?" у Посібнику користувача Git.
GIT
Частина набору git[1]