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.1 → 2.53.0 no changes
- 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
СИНОПСИС
gitswitch[<options>] [--no-guess] <branch>gitswitch[<options>]--detach[<start-point>]gitswitch[<options>] (-c|-C) <new-branch> [<start-point>]gitswitch[<options>]--orphan<new-branch>
ОПИС
Перехід до вказаної гілки. Робоче дерево та індекс оновлюються відповідно до гілки. Усі нові коміти будуть додані на кінчик цієї гілки.
За бажанням, нову гілку можна створити за допомогою -c, -C, автоматично з віддаленої гілки з такою ж назвою (див. --guess), або від’єднати робоче дерево від будь-якої гілки за допомогою --detach, разом з перемиканням.
Перемикання гілок не вимагає чистого індексу та робочого дерева (тобто немає відмінностей порівняно з HEAD). Однак операція переривається, якщо призводить до втрати локальних змін, якщо не вказано інше за допомогою --discard-changes або --merge.
ОПЦІЇ
- <branch>
-
Гілка для переходу.
- <нова-гілка>
-
Назва для нової гілки.
- <start-point>
-
Початкова точка для нової гілки. Вказівка <початкової-точки> дозволяє створити гілку на основі деякої іншої точки в історії, ніж та, на яку зараз вказує
HEAD. (Або, у випадку--detach, дозволяє перевірити та від’єднати від деякої іншої точки.)Ви можете використовувати синтаксис
@{-<N>}для позначення <N>-ї останньої гілки/коміту, на яку було переключено за допомогою операціїgitswitchабоgitcheckout. Ви також можете вказати-, що є синонімом@{-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>
тобто, гілка не скидається/не створюється, доки команда
gitswitchне буде успішною (наприклад, коли гілка використовується в іншому робочому дереві, не лише поточна гілка залишається незмінною, але й гілка не скидається до початкової точки). -
-C<new-branch> -
--force-create<new-branch> -
Подібно до
--create, за винятком того, що якщо <нова-гілка> вже існує, її значення буде скинуто до <початкова-точка>. Це зручне скорочення для:$ git branch -f _<new-branch>_ $ git switch _<new-branch>_
-
-d -
--detach -
Переключіться на коміт для перевірки та експериментів, які можна відкинути. Дивіться розділ "DETACHED HEAD" в git-checkout[1] для отримання детальної інформації.
-
--guess -
--no-guess -
Якщо <branch> не знайдено, але існує гілка відстеження саме в одному віддаленому репозиторії (назвемо його <remote>) з відповідною назвою, розглядайте це як еквівалент
$ 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 -
Якщо у вас є локальні зміни до одного або кількох файлів, які відрізняються між поточною гілкою та гілкою, до якої ви перемикаєтесь, команда відмовляється перемикати гілки, щоб зберегти ваші зміни в контексті. Однак, за допомогою цієї опції тристороннє злиття між поточною гілкою, вмістом вашого робочого дерева та новою гілкою виконується, і ви опинитеся на новій гілці.
У разі виникнення конфлікту злиття записи індексу для шляхів, що конфліктують, залишаються незлиті, і вам потрібно розвʼязати ці конфлікти та позначити розвʼязані шляхи командою
gitadd(абоgitrm, якщо в результаті злиття шлях має бути видалено). -
--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 -
gitswitchвідмовляє, коли потрібне посилання вже отримано іншим робочим деревом. Ця опція дозволяє йому все одно отримати посилання. Іншими словами, посилання може зберігатися більш ніж одним робочим деревом. -
--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]. Вміст такий самий, як і там:
-
checkout.defaultRemote -
Коли ви виконуєте команду
gitcheckout<щось> абоgitswitch<щось> і маєте лише один віддалений репозиторій, система може неявним чином вибрати та відстежувати, наприклад,origin/<щось>. Це перестає працювати, щойно у вас з’являється більше одного віддаленого репозиторію з посиланням <щось>. Цей параметр дозволяє вказати ім’я пріоритетного віддаленого репозиторію, якому завжди слід надавати перевагу при усуненні неоднозначності. Типовим випадком використання є встановлення цього параметра наorigin.Наразі це використовується в git-switch[1] та git-checkout[1], коли команди
gitcheckout<щось> абоgitswitch<щось> виконують перехід до гілки <щось> на іншому віддаленому сервері, а також у git-worktree[1], коли командаgitworktreeaddпосилається на віддалену гілку. У майбутньому це налаштування може використовуватися для інших команд або функцій, подібних до checkout. -
checkout.guess -
Задає стандартне значення для опції
--guessабо--no-guessу командахgitcheckoutтаgitswitch. Див. git-switch[1] та git-checkout[1]. -
checkout.workers -
Кількість паралельних процесів, які використовуються під час оновлення робочого дерева. Стандартне значення — один, тобто послідовне виконання. Якщо встановити значення менше одиниці, Git використовуватиме стільки процесів, скільки буде доступних логічних ядер. Цей параметр та
checkout.thresholdForParallelismвпливають на всі команди, що виконують checkout. Наприклад: checkout, clone, reset, sparse-checkout тощо.NoteПаралельне перевіряння зазвичай забезпечує кращу продуктивність для репозиторіїв, розташованих на SSD-накопичувачах або через NFS. Для репозиторіїв на механічних дисках та/або машинах з невеликою кількістю ядер стандартне послідовне перевіряння часто працює ефективніше. Розмір та рівень стиснення репозиторію також можуть впливати на ефективність роботи паралельної версії. -
checkout.thresholdForParallelism -
Під час паралельного перевіряння невеликої кількості файлів витрати на запуск субпроцесів та міжпроцесну взаємодію можуть перевищити виграш від паралелізації. Цей параметр дозволяє визначити мінімальну кількість файлів, при якій слід спробувати виконати паралельне перевіряння. Стандартне значення — 100.
GIT
Частина набору git[1]