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
SYNOPSIS
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>
DESCRIPTION
Passe à une branche spécifiée. L’arbre de travail et l’index sont mis à jour pour correspondre à la branche. Tous les nouveaux commits seront ajoutés au sommet de cette branche.
En option, une nouvelle branche peut être créée avec les options -c
, -C
, automatiquement à partir d’une branche distante du même nom (voir --guess
), ou détacher l’arbre de travail de toute branche avec --detach
en même temps que la commutation.
La commutation de branche ne nécessite pas d’index et d’arbre de travail propres(c.-à-d. aucune différence par rapport à HEAD
). L’opération est interrompue cependant si l’opération entraîne une perte de modifications locales, sauf indication contraire via --discard-changes
ou --merge
.
OPTIONS
- <branch>
-
Branche sur laquelle commuter.
- <nouvelle-branche>
-
Nom pour une nouvelle branche.
- <point_de_départ>
-
Le point de départ de la nouvelle branche. Indiquer un <point-de-départ> vous permet de créer une branche basée sur un autre point de l’historique plutôt que celui actuellement pointé par
HEAD
. (Ou, dans le cas de--detach
, vous permet d’inspecter et de détacher d’un autre point.)You can use the
@{-
<N>}
syntax to refer to the <N>-th last branch/commit switched to usinggit
switch
orgit
checkout
operation. You may also specify-
which is synonymous to@{-1}
. This is often used to switch quickly between two branches, or to undo a branch switch by mistake.Autre cas spécial, vous pouvez utiliser « <rév-a>
...
<rév-b> » comme raccourci pour la base de fusion de <rév-a> et <rév-b> s’il y a exactement une seule base de fusion. Vous pouvez ne pas spécifier <rév-a> ou <rév-b>, auquel cas ce seraHEAD
par défaut. -
-c
<new-branch> -
--create
<new-branch> -
Create a new branch named <new-branch> starting at <start-point> before switching to the branch. This is the transactional equivalent of
$ git branch <nouvelle-branche> $ git switch <nouvelle-branche>
c’est-à-dire que la branche n’est pas réinitialisée/créée à moins que
git
switch
soit réussi (par exemple, lorsque la branche est utilisée dans un autre arbre de travail, pas seulement que la branche actuelle reste la même, mais la branche n’est pas réinitialisée au point de départ non plus). -
-C
<new-branch> -
--force-create
<new-branch> -
Similaire à
--create
sauf que si <nouvelle-branche> existe déjà, elle sera remise à <point_de_départ>. C’est un raccourci pratique pour :$ git branch -f _<new-branch>_ $ git switch _<new-branch>_
-
-d
-
--detach
-
Basculer à un commit pour une inspection et des expérimentations jetables. Voir la section "HEAD DÉTACHÉE" dans git-checkout[1] pour les détails.
-
--guess
-
--no-guess
-
Si la <branche> n’est pas trouvée mais qu’il existe une branche de suivi pour un dépôt distant unique (appelé <distant>) avec un nom correspondant, le traiter comme équivalent à
$ git switch -c <branche> --track <distant>/<branche>
Si la branche existe dans plus d’un distant et que l’un d’entre eux est la valeur de la variable de configuration
checkout.defaultRemote
, celui-ci sera utilisé pour désambiguïser, même si la <branche> n’est pas unique parmi tous les distants. Réglez la variablecheckout.defaultRemote=origin
par exemple pour extraire toujours les branches distantes depuis celle-ci si <branche> est ambigüe mais existe sur le distant origin. Voir aussicheckout.defaultRemote
dans git-config[1].--guess
est le comportement par défaut. Utilisez--no-guess
pour le désactiver.Le comportement par défaut peut être défini via la variable de configuration
checkout.guess
. -
-f
-
--force
-
Un alias pour
--discard-changes
. -
--discard-changes
-
Continuer même si l’index ou l’arbre de travail diffère de
HEAD
. L’index et l’arbre de travail sont restaurés pour correspondre à la cible de la bascule. Si--recurse-submodules
est indiqué, le contenu du sous-module est restauré pour correspondre à la cible de la bascule. C’est utilisé pour abandonner les changements locaux. -
-m
-
--merge
-
Si vous avez des modifications locales sur un fichier ou plus qui sont différentes entre la branche actuelle et celle sur laquelle vous basculez, la commande refuse le basculement pour préserver vos modifications dans leur contexte. Cependant, avec cette option, une fusion à trois points entre la branche actuelle, le contenu de votre arbre de travail et la nouvelle branche est opérée et vous serez sur la nouvelle branche.
Quand un conflit de fusion apparaît, les entrées d’index pour les chemins en conflit sont laissées non-fusionnées et vous devez résoudre les conflits et les marquer résolus pour les chemins concernés avec
git
add
(ougit
rm
si la fusion doit aboutir à la suppression du chemin). -
--conflict=
<style> -
Identique à l’option
--merge
ci-dessus, mais la manière dont les sections en conflits sont présentées est modifiée, en surchargeant la variable de configurationmerge.conflictStyle
. Les valeurs possibles sontmerge
(fusion, par défaut),diff3
etzdiff3
. -
-q
-
--quiet
-
Silencieux, supprimer les messages d’état.
-
--progress
-
--no-progress
-
L’état d’avancement est affiché sur la sortie standard d’erreur par défaut quand elle est attachée à un terminal, à moins que
--quiet
ne soit spécifié. Cette bascule active l’état d’avancement même sans être attaché à un terminal, indépendamment de--quiet
. -
-t
-
--track
[ (direct
|inherit
)] -
À la création d’une nouvelle branche, établir la configuration upstream (branche amont).
-c
est implicite. Voir--track
dans git-branch[1] pour plus de détails.Si aucune option
-c
n’est fournie, le nom de la nouvelle branche sera dérivé de la branche de suivi à distance, en regardant la partie locale de la spécification de référence configurée pour le distant correspondant et en enlevant la partie initiale jusqu’au "*". Cela indiquerait d’utiliser le nomhack
comme branche locale créée à partir deorigin/hack
(ouremotes/origin/hack
, ou mêmerefs/remotes/origin/hack
). Si le nom fourni ne contient pas de barre oblique, ou si le résultat de la dérivation est un nom vide, la dérivation échoue. Vous pouvez spécifier explicitement un nom avec-c
dans ce cas. -
--no-track
-
Ne pas renseigner la configuration « amont », même si la configuration
branch.autoSetupMerge
est true. -
--orphan
<nouvelle-branche> -
Créer une nouvelle branche non née, nommée <nouvelle-branche>. Tous les fichiers suivis sont supprimés.
-
--ignore-other-worktrees
-
git
switch
échoue quand la référence voulue est déjà extraite dans un autre arbre de travail. Cette option force l’extraction. En d’autres termes, la réf peut être tenue par plus d’un arbre de travail. -
--recurse-submodules
-
--no-recurse-submodules
-
L’utilisation de
--recurse-submodules
permet de mettre à jour le contenu de tous les sous-modules actifs en fonction du commit enregistré dans le super-projet. Si l’option n’est pas spécifiée (ou si--no-recurse-submodules
est spécifié), les arbres de travail des sous-modules ne sont pas mis à jour. Comme git-submodule[1], lesHEAD
des sous-modules seront détachées.
EXEMPLES
La commande suivante bascule sur la branche "master" :
$ git switch master
Après avoir travaillé dans la mauvaise branche, basculer sur la branche correcte serait réalisé par :
$ git switch monsujet
Cependant, votre « fausse » branche et votre branche correcte « monsujet » peuvent être différentes par les fichiers que vous avez modifiés localement, auquel cas le basculement ci-dessus échouerait comme ceci :
$ git switch monsujet error : Vos modifications locales aux fichiers suivants seraient écrasées par l'extraction :
Vous pouvez fournir l’option -m
à la commande, ce qui essaierait une fusion à trois points :
$ git switch -m monsujet Fusion automatique de frotz
Après cette fusion à trois points, les modifications locales ne sont pas enregistrées dans votre index, donc git
diff
vous montrerait ce qui a changé depuis le sommet de la nouvelle branche.
Pour retourner sur la branche active avant la bascule sur monsujet (c’est-à-dire la branche "master") :
$ git switch -
Vous pouvez démarrer une nouvelle branche depuis n’import quel commit. Par exemple, basculer vers "HEAD~3
" et créer une branche "fixup
" :
$ git switch -c fixup HEAD~3 Basculement sur la nouvelle branche 'fixup'
Si vous souhaitez démarrer une branche nouvelle depuis une branche distante du même nom :
$ git switch new-topic Branch `new-topic` set up to track remote branch `new-topic` from `origin` Switched to a new branch `new-topic`
Pour récupérer le commit HEAD~3
pour une inspection temporaire ou une expérmentation sans créer une nouvelle branche :
$ git switch --detach HEAD~3 HEAD est maintenant sur 9fc9555312 Merge branch 'cc/shared-index-permbits'
S’il s’avère que ce que vous avez fait vaut la peine d’être gardé, vous pouvez toujours créer un nouveau nom pour cela (sans bascule supplémentaire) :
$ git switch -c bonne-surprise
CONFIGURATION
Tout ce qui se trouve en dessous de cette ligne dans cette section est inclus de manière sélective à partir de la documentation git-config[1]. Le contenu est le même que celui qui s’y trouve :
Warning | Missing See original version for this content. |
GIT
Fait partie de la suite git[1]
TRADUCTION
Cette page de manuel a été traduite par Jean-Noël Avila <jn.avila AT free DOT fr> et les membres du projet git-manpages-l10n. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le site https://github.com/jnavila/git-manpages-l10n .