Git 🌙
Français ▾ Topics ▾ Latest version ▾ git-checkout last updated in 2.44.0

NOM

git-checkout - Bascule sur une autre branche ou restaure des fichiers de l’arbre de travail

SYNOPSIS

git checkout [-q] [-f] [-m] [<branche>]
git checkout [-q] [-f] [-m] --detach [<branche>]
git checkout [-q] [-f] [-m] [--detach] <commit>
git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <nouvelle-branche>] [<point-de-départ>]
git checkout [-f] <arbre-esque> [--] <spec-de-chemin>…​
git checkout [-f] <arbre-esque> --pathspec-from-file=<fichier> [--pathspec-file-nul]
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [--] <spec-de-chemin>…​
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] --pathspec-from-file=<fichier> [--pathspec-file-nul]
 git checkout (-p|--patch) [<arbre-esque>] [--] [<spec-de-chemin>…​]

DESCRIPTION

Met Ă  jour les fichiers dans l’arbre de travail pour correspondre Ă  la version dans l’index ou dans l’arbre spĂ©cifiĂ©. Si aucun spĂ©cificateur de chemin n’est fourni, git checkout met aussi Ă  jour HEAD pour positionner la branche spĂ©cifiĂ©e comme la branche actuelle.

git checkout [<branche>]

Pour se prĂ©parer Ă  travailler sur <branche>, basculer dessus en mettant l’index et les fichiers de l’arbre de travail Ă  jour, et en pointant HEAD sur cette branche. Les modifications locales aux fichiers de l’arbre de travail sont conservĂ©es, de sorte qu’elles peuvent ĂŞtre validĂ©es sur la <branche>.

Si la <branche> n’est pas trouvĂ©e mais qu’il existe une branche de suivi pour un dĂ©pĂ´t distant unique (appelĂ©e <distant>) avec un nom correspondant et --no-guess n’est pas spĂ©cifiĂ©, le traiter comme Ă©quivalent Ă 

$ git checkout -b <branche> --track <distant>/<branche>

Vous pourriez omettre <branche>, auquel cas la commande dĂ©gĂ©nère en « extraire la branche actuelle », qui est une opĂ©ration nulle de luxe avec des effets de bord plutĂ´t chers de ne montrer que l’information de suivi, si elle existe, pour la branche actuelle.

git checkout -b|-B <nouvelle-branche> [<point-de-départ>]

SpĂ©cifier -b provoque la crĂ©ation d’une nouvelle branche comme si git-branch[1] Ă©tait lancĂ© puis la branche extraite. Dans ce cas, vous pouvez utiliser les options --track ou --no-track, qui seront passĂ©es Ă  git branch. Pour plus de confort, --track sans -b implique la crĂ©ation d’une branche ; voir la description de --track ci-dessous.

Si -B est fourni, <nouvelle-branche> est crĂ©Ă©e si elle n’existe pas ; sinon, elle est rĂ©initialisĂ©e. C’est l’Ă©quivalent transactionnel de

$ git branch -f <branche> [<point-de-départ>]
$ git checkout <branche>

c’est-Ă -dire que la branche n’est pas rĂ©initialisĂ©e/crĂ©Ă©e Ă  moins que "git checkout" 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).

git checkout --detach [<branche>]
git checkout [--detach] <commit>

PrĂ©pare Ă  travailler par-dessus <commit>, en dĂ©tachant HEAD dessus (voir la section « HEAD DÉTACHÉE »), et en mettant l’index et les fichiers de l’arbre de travail Ă  jour. Les modifications locales des fichiers dans l’arbre de travail sont conservĂ©es, de sorte que l’arbre de travail sera le rĂ©sultat du commit plus les modifications locales.

Quand l’argument <commit> est un nom de branche, l’option --detach peut ĂŞtre utilisĂ©e pour dĂ©tacher HEAD au sommet de la branche (git checkout <branche> extrairait cette branche sans dĂ©tacher HEAD).

Omettre <branche> détache HEAD au sommet de la branche actuelle.

git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<arbre-esque>] [--] <spĂ©c. de chemin>…​
git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<arbre-esque>] --pathspec-from-file=<fichier> [--pathspec-file-nul]

Écraser le contenu des fichiers qui correspondent au spĂ©cificateur-de-chemin. Lorsque le <arbre-esque> (le plus souvent un commit) n’est pas donnĂ©, Ă©craser l’arbre de travail avec le contenu de l’index. Lorsque le <arbre-esque> est donnĂ©, Ă©craser Ă  la fois l’index et l’arbre de travail avec le contenu du <arbre-esque>.

L’index peut contenir des entrĂ©es non fusionnĂ©es Ă  cause d’un Ă©chec prĂ©cĂ©dent de fusion. Par dĂ©faut, si vous essayez d’extraire une telle entrĂ©e depuis l’index, l’opĂ©ration d’extraction Ă©chouera et rien ne sera extrait. L’utilisation de -f forcera Ă  ignorer ces entrĂ©es non fusionnĂ©es. Le contenu depuis un cĂ´tĂ© donnĂ© de la fusion peut ĂŞtre extrait de l’index en utilisant --ours (notre cĂ´tĂ©) ou --theirs (l’autre cĂ´tĂ©). Avec -m, les modifications opĂ©rĂ©es sur le fichier de l’arbre de travail peuvent ĂŞtre jetĂ©es pour rĂ©crĂ©er le rĂ©sultat originel de conflit de fusion.

git checkout (-p|--patch) [<arbre-esque>] [--] [<spĂ©c. de chemin>…​]

C’est similaire au mode prĂ©cĂ©dent, mais vous laisse utiliser l’interface interactive pour afficher la sortie « diff » et choisir quelles sections utiliser dans le rĂ©sultat. Voir plus bas la description de l’option --patch.

OPTIONS

-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.

-f
--force

Lors du basculement de branche, continuer mĂŞme si l’index ou l’arbre de travail sont diffĂ©rents de HEAD, et mĂŞme s’il y a des fichiers non-suivis qui bloquent.Ceci peut servir Ă  Ă©liminer des modifications locales ainsi que tous les fichiers ou rĂ©pertoires non-suivis qui gĂŞnent.

Lors de l’extraction de chemins depuis l’index, ne pas Ă©chouer sur des entrĂ©es non fusionnĂ©es ; Ă  la place, les entrĂ©es non fusionnĂ©es sont ignorĂ©es.

--ours
--theirs

Lors de l’extraction de chemins depuis l’index, extraire l’Ă©tat #2 (ours, le nĂ´tre) ou #3 (theirs, le leur) pour les chemins non fusionnĂ©s.

Veuillez noter que pendant git rebase et git pull --rebase, ours et theirs peuvent sembler échangés ; --ours fournit la version depuis la branche sur laquelle les modifications sont rebasées, tandis que --theirs fournit la version de la branche qui contient le travail rebasé.

C’est parce que rebase est utilisĂ© dans une approche qui traite l’historique distant comme la rĂ©fĂ©rence canonique partagĂ©e, et traite le travail sur la branche que vous rebasez comme un travail tiers Ă  intĂ©grer, et vous endossez temporairement le rĂ´le du gardien de l’historique canonique quand vous rebasez. En tant que gardien de l’historique canonique, vous devez voir l’historique distant comme le vĂ´tre (ours, c’est-Ă -dire « notre historique partagĂ© canonique »), tandis que votre travail sur l’autre branche devient le tiers (theirs, c’est-Ă -dire « le travail d’un contributeur sur le canonique »).

-b <nouvelle-branche>

Créer une nouvelle branche nommée <nouvelle-branche>, la commencer à <point-de-départ> et extraire la branche résultante ; voir git-branch[1] pour plus de détails.

-B <nouvelle-branche>

CrĂ©er la branche <nouvelle-branche>, la commencer Ă  <point-de-dĂ©part> et l’extraire ; si elle existe dĂ©jĂ , alors la rĂ©initialise Ă  <point-de-dĂ©part>. C’est Ă©quivalent Ă  lancer git branch avec -f suivi de git checkout de cette branche ; voir git-branch[1] pour plus de dĂ©tails.

-t
--track[=(direct|inherit)]

Ă€ la crĂ©ation d’une nouvelle branche, Ă©tablir la configuration upstream (branche amont). Voir --track dans git-branch[1] pour plus de dĂ©tails.

Si aucune option -b 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 nom « hack » comme branche locale crĂ©Ă©e Ă  partir de origin/hack (ou remotes/origin/hack, ou mĂŞme refs/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 -b dans ce cas.

--no-track

Ne pas renseigner la configuration « amont », même si la configuration branch.autoSetupMerge est true.

--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 checkout -b <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 variable checkout.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 aussi checkout.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.

-l

Créer le reflog de la nouvelle branche ; voir git-branch[1] pour plus de détails.

-d
--detach

PlutĂ´t que d’extraire une branche pour travailler dessus, extraire un commit pour l’inspecter et faire des expĂ©riences jetables. C’est le comportement par dĂ©faut de git checkout <commit> quand <commit> n’est pas un nom de branche. Voir la section « HEAD DÉTACHÉE » plus bas pour plus de dĂ©tails.

--orphan <nouvelle-branche>

CrĂ©er une nouvelle branche non nĂ©e, nommĂ©e <nouvelle-branche>, commençant depuis <point-de-dĂ©part> et basculer dessus. Le premier commit rĂ©alisĂ© sur cette branche n’aura pas de parent et il sera la racine du nouvel historique totalement dĂ©connectĂ© de toutes les autres branches et des autres commits.

L’index et l’arbre de travail sont ajustĂ©s comme si vous aviez dĂ©jĂ  lancĂ© git checkout <point-de-dĂ©part>. Cela vous permet de dĂ©marrer un nouvel historique qui enregistre un ensemble de chemins similaires Ă  <point-de-dĂ©part> en lançant simplement git commit -a pour crĂ©er le commit racine.

Ceci peut ĂŞtre utile quand vous souhaitez publier un arbre depuis un commit sans exposer tout son historique. Vous pourriez souhaiter le faire pour publier une branche open source d’un projet dont l’arbre prĂ©sent est « propre », mais dont l’historique complet contient des morceaux de code propriĂ©taire ou autrement non publiables.

Si vous voulez dĂ©marrer un historique dĂ©connectĂ© qui enregistre un ensemble de chemins qui sont totalement diffĂ©rents de celui de <point-de-dĂ©part>, vous devriez effacer l’index et l’arbre de travail juste après avoir crĂ©Ă© la branche orpheline en lançant git rm -rf . depuis la racine de l’arbre de travail. Après, vous pourrez prĂ©parer vos nouveaux fichiers, pour repeupler l’arbre de travail, en les copiant depuis un autre endroit, en les extrayant depuis une archive, etc.

--ignore-skip-worktree-bits

En mode d’extraction clairsemĂ©, git checkout -- <chemins> mettrait seulement Ă  jour les entrĂ©es correspondant Ă  <chemins> et aux motifs clairsemĂ©s dans $GIT_DIR/info/sparse-checkout. Cette option ignore les motifs clairsemĂ©s et rĂ©-ajoute tous les fichiers de <chemins>.

-m
--merge

Lors d’un basculement de branche, 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 (ou git rm si la fusion doit aboutir Ă  la suppression du chemin).

Lors de l’extraction de chemins depuis l’index, cette option vous permet de rĂ©crĂ©er la fusion en conflit dans les chemins spĂ©cifiĂ©s. Cette option ne peut pas ĂŞtre utilisĂ©e lors de l’extraction des chemins depuis un arbre-esque.

Lors du basculement de branche avec --merge, les modifications indexées peuvent être perdues.

--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 configuration merge.conflictStyle. Les valeurs possibles sont merge (fusion, par dĂ©faut), diff3 et zdiff3.

-p
--patch

SĂ©lectionner interactivement les sections dans la diffĂ©rence entre l'<arbre-esque> (ou l’index, si non spĂ©cifiĂ©) et l’arbre de travail. Les sections choisies sont ensuite appliquĂ©es en ordre inversĂ© Ă  l’arbre de travail (et si un <arbre-esque> a Ă©tĂ© spĂ©cifiĂ©, Ă  l’index).

Ceci signifie que vous pouvez utiliser git checkout -p pour supprimer sélectivement les éditions depuis votre arbre de travail actuel. Voir la section « Mode Interactif » de git-add[1] pour apprendre à utiliser le mode --patch.

Notez que cette option utilise par défaut le mode sans superposition (voir aussi --overlay), et ne supporte pas actuellement le mode superposition.

--ignore-other-worktrees

git checkout Ă©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.

--overwrite-ignore
--no-overwrite-ignore

Écraser silencieusement les fichiers ignorĂ©s lors du basculement de branche. C’est le comportement par dĂ©faut. Utilisez --no-overwrite-ignore pour annuler l’opĂ©ration lorsque la nouvelle branche contient des fichiers ignorĂ©s.

--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 des modifications locales au sous-modules seraient Ă©crasĂ©es, l’extraction Ă©choue Ă  moins d’utiliser -f. 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], la HEAD des sous-modules sera dĂ©tachĂ©e.

--overlay
--no-overlay

Dans le mode de superposition par défaut, git checkout ne supprime jamais les fichiers de l’index ou de l’arbre de travail. Lorsque vous spécifiez --no-overlay, les fichiers qui apparaissent dans l’index et l’arbre de travail, mais pas dans «<arbre-esque>» sont supprimés, pour les faire correspondre à <arbre-esque> exactement.

--pathspec-from-file=<fichier>

Le spĂ©cificateur de chemin est passĂ© dans <fichier> au lieu des arguments de la ligne de commande. Si <fichier> vaut - alors l’entrĂ©e standard est utilisĂ©e. Les Ă©lĂ©ments du spĂ©cificateur de chemin sont sĂ©parĂ©s par LF ou CR/LF. Les Ă©lĂ©ments du spĂ©cificateur de chemin peuvent ĂŞtre citĂ©s comme expliquĂ© pour la variable de configuration core.quotePath (voir git-config[1]). Voir aussi l’option --pathspec-file-nul et l’option globale --literal-pathspecs.

--pathspec-file-nul

Uniquement significatif avec --pathspec-from-file. Les éléments du spécificateur de chemin sont séparés par le caractère NUL et tous les autres caractères sont utilisés littéralement (y compris les retours à la ligne et les guillemets).

<branche>

Branche Ă  extraire ; si c’est une rĂ©fĂ©rence Ă  une branche (c’est-Ă -dire un nom qui, prĂ©fixĂ© par « refs/heads/ » est une rĂ©fĂ©rence valide), alors cette branche est extraite. Sinon, si c’est une rĂ©fĂ©rence Ă  un commit valide, votre HEAD devient « dĂ©tachĂ©e » et vous n’ĂŞtes plus sur aucune branche (voir plus bas pour plus de dĂ©tails).

Vous pouvez utiliser la syntaxe @{-N} pour faire référence à la N-ième dernière branche ou commit extrait en utilisant une opération « git checkout ». Vous pouvez aussi spécifier - qui est synonyme de @{-1}.

Autre cas spĂ©cial supplĂ©mentaire, vous pouvez utiliser A...B comme raccourci pour la base de fusion de A et B s’il y a exactement une seule base de fusion. Vous pouvez ne pas spĂ©cifier A ou B, auquel cas ce sera HEAD par dĂ©faut.

<nouvelle-branche>

Nom pour une nouvelle branche.

<point_de_départ>

Le nom du commit auquel démarrer la nouvelle branche ; voir git-branch[1] pour plus de détails. HEAD par défaut.

Autre cas spĂ©cial supplĂ©mentaire, vous pouvez utiliser « A…​B » comme raccourci pour la base de fusion de A et B s’il y a exactement une seule base de fusion. Vous pouvez ne pas spĂ©cifier A ou B, auquel cas ce sera HEAD par dĂ©faut.

<arbre-esque>

Arbre depuis lequel extraire (quand des chemins sont indiquĂ©s). Si non spĂ©cifiĂ©, l’index est utilisĂ©.

Autre cas spĂ©cial supplĂ©mentaire, vous pouvez utiliser « A…​B » comme raccourci pour la base de fusion de A et B s’il y a exactement une seule base de fusion. Vous pouvez ne pas spĂ©cifier A ou B, auquel cas ce sera HEAD par dĂ©faut.

--

Ne pas interpréter les arguments qui suivent comme options.

<spĂ©cificateur de chemin>…​

Limite les chemins affectĂ©s par l’opĂ©ration.

Pour plus de dĂ©tail, voir l’entrĂ©e spĂ©cificateur de chemin dans gitglossary[7].

HEAD DÉTACHÉE

HEAD fait normalement référence à une branche nommée (par exemple, master). Dans le même temps, chaque branche pointe sur un commit spécifique. Regardons un dépôt avec trois commits, dont un est étiqueté, et avec la branche master extraite :

           HEAD (se réfère à la branche 'master')
            |
            v
a---b---c  branch 'master' (se réfère au commit 'c')
    ^
    |
  tag 'v2.0' (se réfère au commit 'b')

Quand un commit est créé dans cet état, la branche est mise à jour pour faire référence au nouveau commit. Plus précisément, git commit crée un nouveau commit d, dont le parent est le commit c, et ainsi elle met à jour la branche master pour faire référence au nouveau commit d. HEAD fait toujours référence à la branche master et donc fait maintenant référence indirectement au commit d :

$ edit; git add; git commit

               HEAD (se réfère à la branche 'master')
                |
                v
a---b---c---d  branche 'master' (se réfère au commit 'd')
    ^
    |
  tag 'v2.0' (se réfère au commit 'b')

Il est parfois utile de permettre l’extraction d’un commit qui n’est sommet d’aucune branche ou mĂŞme de crĂ©er un nouveau commit qui n’est pas rĂ©fĂ©rencĂ© par une branche nommĂ©e. Regardons ce qui arrive quand on extrait le commit b (ici, deux manières de faire sont montrĂ©es) :

$ git checkout v2.0  # ou
$ git checkout master^^

   HEAD (se réfère au commit 'b')
    |
    v
a---b---c---d  branch 'master' (se réfère au commit 'd')
    ^
    |
  tag 'v2.0' (se réfère au commit 'b')

Veuillez noter que quelle que soit la commande d’extraction utilisĂ©e, HEAD pointe maintenant directement sur le commit b. C’est connu comme Ă©tant l’Ă©tat HEAD dĂ©tachĂ©e. Ceci signifie simplement que HEAD fait rĂ©fĂ©rence Ă  un commit spĂ©cifique, par opposition Ă  une rĂ©fĂ©rence Ă  une branche nommĂ©e. Voyons ce qui arrive quand un commit est créé :

$ edit; git add; git commit

     HEAD (se réfère au commit 'e')
      |
      v
      e
     /
a---b---c---d  branche 'master' (se réfère au commit 'd')
    ^
    |
  tag 'v2.0' (se réfère au commit 'b')

Il y a maintenant un nouveau commit e mais il est référencé seulement par HEAD. Un autre commit peut bien sûr être ajouté dans cet état :

$ edit; git add; git commit

	 HEAD (se réfère au commit 'f')
	  |
	  v
      e---f
     /
a---b---c---d  branche 'master' (se réfère au commit 'd')
    ^
    |
  tag 'v2.0' (se réfère au commit 'b')

En fait, toutes les opérations normales de Git peuvent être exécutées. Mais, regardons ce qui arrive quand master est extraite :

$ git checkout master

               HEAD (se réfère au branch 'master')
      e---f     |
     /          v
a---b---c---d  branche 'master' (se réfère au commit 'd')
    ^
    |
  tag 'v2.0' (se réfère au commit 'b')

Il est important de rĂ©aliser qu’Ă  ce moment, rien ne fait rĂ©fĂ©rence au commit f. Finalement, le commit f (et par extension le commit e) sera supprimĂ© par le processus de ramasse-miette rĂ©gulier de Git, Ă  moins de crĂ©er une rĂ©fĂ©rence avant que cela n’arrive. Si vous n’avez pas encore quittĂ© le commit f, une des commandes suivantes permet de crĂ©er une rĂ©fĂ©rence sur lui :

$ git checkout -b foo  # ou "git switch -c foo"  (1)
$ git branch foo                                 (2)
$ git tag foo                                    (3)
  1. crĂ©e une nouvelle branche foo qui fait rĂ©fĂ©rence au commit f, puis met Ă  jour HEAD pour faire rĂ©fĂ©rence Ă  la branche foo. En d’autres termes, l’Ă©tat ne sera plus en HEAD dĂ©tachĂ©e après cette commande.

  2. crée aussi une nouvelle branche foo qui fait référence au commit f mais laisse HEAD détachée.

  3. crée une nouvelle étiquette foo qui fait référence au commit f, en laissant HEAD détachée.

Si nous ne sommes plus sur f, alors nous devons d’abord retrouver son nom d’objet (typiquement en utilisant git reflog), puis nous pouvons crĂ©er une rĂ©fĂ©rence dessus. Par exemple, pour voir les deux derniers commits sur lesquels HEAD pointait, nous pouvons utiliser l’une des commandes suivantes :

$ git reflog -2 HEAD # ou
$ git log -g -2 HEAD

DÉSAMBIGUĂŹSATION D’ARGUMENT

Quand il n’y a qu’un argument fourni et qu’il n’est pas -- (par exemple git checkout abc) et quand l’argument est Ă  la fois un <arbre-esque> valide (par exemple une branche abc existe) et un <spĂ©cificateur_de_chemin> valide (par exemple un fichier ou un rĂ©pertoire du nom de « abc » existe), Git vous demandera gĂ©nĂ©ralement de lever l’ambiguĂŻtĂ©. Du fait qu’extraire une branche est une opĂ©ration très commune, cependant, git checkout abc considère « abc » comme un <arbre-esque> dans une telle situation. Utilisez git checkout -- <spĂ©cificateur_de_chemin> si vous voulez extraire ces chemins depuis l’index.

EXEMPLES

1. Chemins

La sĂ©quence suivante extrait la branche master, ramène le fichier Makefile Ă  deux rĂ©visions en arrière, supprime hello.c par erreur et le rĂ©cupère de l’index.

$ git checkout master             (1)
$ git checkout master~2 Makefile  (2)
$ rm -f hello.c
$ git checkout hello.c            (3)
  1. bascule de branche

  2. prend un fichier depuis un autre commit

  3. restaure hello.c depuis l’index

Si vous souhaitez extraire tous les fichiers source C de l’index, vous pouvez lancer

$ git checkout -- '*.c'

Notez les guillemets autour de *.c. Le fichier hello.c sera aussi extrait, mĂŞme s’il n’est plus dans l’arbre de travail, parce que le patron de fichier est utilisĂ© pour trouver les entrĂ©es dans l’index (et non dans l’arbre de travail par le shell).

Si vous avez une branche qui s’appelle malheureusement hello.c, cette Ă©tape pourrait ĂŞtre confondue avec une instruction de basculer sur cette branche. Vous devriez alors plutĂ´t Ă©crire :

$ git checkout -- hello.c

2. Fusion

Après avoir travaillé dans la mauvaise branche, basculer sur la branche correcte serait réalisé par :

$ git checkout 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 l’extraction ci-dessus Ă©chouerait comme ceci :

$ git checkout 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 checkout -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.

3. Conflit de fusion

Quand un conflit de fusion arrive pendant un basculement de branche avec l’option -m, vous devriez voir quelque chose comme :

$ git checkout -m mytopic
Fusion automatique de frotz
CONFLIT (contenu): Conflit de fusion dans frotz
fatal: merge program failed

Ă€ ce stade, git diff affiche les modifications proprement fusionnĂ©es comme dans l’exemple prĂ©cĂ©dent, ainsi que les modifications en conflit. Éditez et rĂ©solvez le conflit et marquez-le rĂ©solu avec git add comme d’habitude :

$ edit frotz
$ git add frotz

CONFIGURATION

Warning

Missing fr/includes/cmd-config-section-all.txt

See original version for this content.

Warning

Missing fr/config/checkout.txt

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 .

scroll-to-top