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 no changes
- 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.2 → 2.43.7 no changes
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.38.1 → 2.42.4 no changes
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 no changes
-
2.35.0
2022-01-24
- 2.30.1 → 2.34.8 no changes
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 no changes
-
2.27.0
2020-06-01
- 2.23.1 → 2.26.3 no changes
-
2.23.0
2019-08-16
СИНОПСИС
git
switch
[<options>] [--no-guess
] <branch>git
switch
[<options>]--detach
[<start-point>]git
switch
[<options>] (-c
|-C
) <new-branch> [<start-point>]git
switch
[<options>]--orphan
<new-branch>
ОПИС
Перехід до вказаної гілки. Робоче дерево та індекс оновлюються відповідно до гілки. Усі нові коміти будуть додані на кінчик цієї гілки.
За бажанням, нову гілку можна створити за допомогою -c
, -C
, автоматично з віддаленої гілки з такою ж назвою (див. --guess
), або від’єднати робоче дерево від будь-якої гілки за допомогою --detach
, разом з перемиканням.
Перемикання гілок не вимагає чистого індексу та робочого дерева (тобто немає відмінностей порівняно з HEAD
). Однак операція переривається, якщо призводить до втрати локальних змін, якщо не вказано інше за допомогою --discard-changes
або --merge
.
ОПЦІЇ
- <branch>
-
Гілка для переходу.
- <нова гілка>
-
Назва для нової гілки.
- <start-point>
-
Початкова точка для нової гілки. Вказівка <початкової-точки> дозволяє створити гілку на основі деякої іншої точки в історії, ніж та, на яку зараз вказує
HEAD
. (Або, у випадку--detach
, дозволяє перевірити та від’єднати від деякої іншої точки.)Ви можете використовувати синтаксис
@{-
<N>}
для позначення <N>-ї останньої гілки/коміту, на яку було переключено за допомогою операціїgit
switch
абоgit
checkout
. Ви також можете вказати-
, що є синонімом@{-1}
. Це часто використовується для швидкого перемикання між двома гілками або для скасування помилкового перемикання гілок.Як окремий випадок, ви можете використовувати <rev-a>
...
<rev-b> як скорочення для бази злиття <rev-a> та <rev-b>, якщо існує лише одна база злиття. Ви можете пропустити щонайбільше одну з <rev-a> та <rev-b>, і в цьому випадку за замовчуванням використовуєтьсяHEAD
. -
-c
<new-branch> -
--create
<new-branch> -
Створіть нову гілку з назвою <нова-гілка>, починаючи з <початкова-точка>, перш ніж перемикатися на гілку. Це транзакційний еквівалент
$ git branch <new-branch> $ git switch <new-branch>
тобто, гілка не скидається/не створюється, доки команда
git
switch
не буде успішною (наприклад, коли гілка використовується в іншому робочому дереві, не лише поточна гілка залишається незмінною, але й гілка не скидається до початкової точки). -
-C
<new-branch> -
--force-create
<new-branch> -
Подібно до
--create
, за винятком того, що якщо <нова-гілка> вже існує, її значення буде скинуто до <початкова-точка>. Це зручне скорочення для:$ git branch -f _<new-branch>_ $ git switch _<new-branch>_
-
-d
-
--detach
-
Переключіться на коміт для перевірки та експериментів, які можна відкинути. Дивіться розділ "ВІДРІЗНЕНА ГОЛОВА" в git-checkout[1] для отримання детальної інформації.
-
--guess
-
--no-guess
-
Якщо <гілка> не знайдено, але існує гілка відстеження рівно в одному віддаленому середовищі (назвемо його <віддаленим>) з відповідним ім’ям, розглядати як еквівалент
$ git switch -c <branch> --track <remote>/<branch>
Якщо гілка існує на кількох віддалених серверах, і одна з них названа змінною конфігурації
checkout.defaultRemote
, ми використовуватимемо її для усунення неоднозначностей, навіть якщо <branch> не є унікальною на всіх віддалених серверах. Встановіть її, наприклад, наcheckout.defaultRemote=origin
, щоб завжди отримувати віддалені гілки звідти, якщо <branch> є неоднозначною, але існує на віддаленому сервері origin. Див. такожcheckout.defaultRemote
у git-config[1].--guess
— це поведінка за замовчуванням. Використовуйте--no-guess
, щоб вимкнути її.Поведінку за замовчуванням можна встановити за допомогою змінної конфігурації
checkout.guess
. -
-f
-
--force
-
Псевдонім для
--discard-changes
. -
--discard-changes
-
Продовжити, навіть якщо індекс або робоче дерево відрізняється від
HEAD
. Як індекс, так і робоче дерево відновлюються відповідно до цілі перемикання. Якщо вказано--recurse-submodules
, вміст підмодуля також відновлюється відповідно до цілі перемикання. Це використовується для скасування локальних змін. -
-m
-
--merge
-
Якщо у вас є локальні зміни до одного або кількох файлів, які відрізняються між поточною гілкою та гілкою, до якої ви перемикаєтесь, команда відмовляється перемикати гілки, щоб зберегти ваші зміни в контексті. Однак, за допомогою цієї опції тристороннє злиття між поточною гілкою, вмістом вашого робочого дерева та новою гілкою виконується, і ви опинитеся на новій гілці.
Коли виникає конфлікт злиття, записи індексу для конфліктуючих шляхів залишаються необ’єднаними, і вам потрібно вирішити конфлікти та позначити вирішені шляхи за допомогою
git
add
(абоgit
rm
, якщо злиття має призвести до видалення шляху). -
--conflict=
<стиль> -
Те саме, що й опція
--merge
вище, але змінює спосіб представлення конфліктуючих фрагментів, перевизначаючи змінну конфігураціїmerge.conflictStyle
. Можливі значення:merge
(за замовчуванням),diff3
таzdiff3
. -
-q
-
--quiet
-
Тихі, придушені повідомлення зворотного зв’язку.
-
--progress
-
--no-progress
-
Стан виконання за замовчуванням повідомляється у стандартному потоці помилок, коли він підключений до терміналу, якщо не вказано
--quiet
. Цей прапорець дозволяє повідомляти про хід виконання, навіть якщо він не підключений до терміналу, незалежно від--quiet
. -
-t
-
--track
[ (direct
|inherit
)] -
Під час створення нової гілки налаштуйте конфігурацію "upstream". Мається на увазі
-c
. Див.--track
у git-branch[1] для отримання детальної інформації.Якщо не вказано опцію
-c
, назва нової гілки буде отримана з гілки віддаленого відстеження, шляхом перегляду локальної частини специфікації посилань, налаштованої для відповідної віддаленої гілки, а потім видалення початкової частини до "*". Це підкаже нам використовуватиhack
як локальну гілку під час розгалуження відorigin/hack
(абоremotes/origin/hack
, або навітьrefs/remotes/origin/hack
). Якщо задана назва не має косої риски, або вищевказане вгадування призводить до порожньої назви, вгадування переривається. У такому випадку ви можете явно вказати назву за допомогою-c
. -
--no-track
-
Не налаштовуйте конфігурацію "upstream", навіть якщо змінна конфігурації
branch.autoSetupMerge
має значення true. -
--orphan
<new-branch> -
Створіть нову ненароджену гілку з назвою <нова-гілка>. Усі відстежувані файли видаляються.
-
--ignore-other-worktrees
-
git
switch
відмовляє, коли потрібне посилання вже отримано іншим робочим деревом. Ця опція дозволяє йому все одно отримати посилання. Іншими словами, посилання може зберігатися більш ніж одним робочим деревом. -
--recurse-submodules
-
--no-recurse-submodules
-
Використання
--recurse-submodules
оновить вміст усіх активних підмодулів відповідно до коміту, записаного в суперпроекті. Якщо нічого не використовується (або--no-recurse-submodules
), робочі дерева підмодулів не оновлюватимуться. Так само, як і git-submodule[1], це від’єднаєHEAD
підмодулів.
ПРИКЛАДИ
Наступна команда перемикає на гілку "master":
$ git switch master
Після роботи в неправильній гілці, перемикання на правильну гілку буде здійснюватися за допомогою:
$ git switch mytopic
Однак, ваша "неправильна" гілка та правильна гілка "mytopic" можуть відрізнятися у файлах, які ви змінили локально, і в такому разі вищезгаданий перемикач не спрацює ось так:
$ git switch mytopic error: You have local changes to 'frotz'; not switching branches.
Ви можете надати команді прапорець -m
, що спробує виконати тристороннє злиття:
$ git switch -m mytopic Auto-merging frotz
Після цього тристороннього злиття локальні зміни не реєструються у вашому індексному файлі, тому git
diff
покаже вам, які зміни ви внесли з моменту створення нової гілки.
Щоб повернутися до попередньої гілки перед тим, як ми переключилися на mytopic (тобто гілку "master"):
$ git switch -
Ви можете створити нову гілку з будь-якого коміту. Наприклад, перейдіть на "HEAD~3
" та створіть гілку "fixup
":
$ git switch -c fixup HEAD~3 Switched to a new branch 'fixup'
Якщо ви хочете розпочати нову гілку з віддаленої гілки з такою ж назвою:
$ git switch new-topic Branch `new-topic` set up to track remote branch `new-topic` from `origin` Switched to a new branch `new-topic`
Щоб тимчасово перевірити коміт HEAD~3
або перевірити його без створення нової гілки:
$ git switch --detach HEAD~3 HEAD is now at 9fc9555312 Merge branch 'cc/shared-index-permbits'
Якщо виявиться, що будь-що з того, що ви зробили, варто зберегти, ви завжди можете створити для нього нову назву (не змінюючи її):
$ git switch -c good-surprises
КОНФІГУРАЦІЯ
Все, що знаходиться нижче цього рядка в цьому розділі, вибірково включено з документації git-config[1]. Вміст такий самий, як і там:
Warning
|
Missing See original version for this content. |
GIT
Частина набору git[1]