Git
Français ▾ Topics ▾ Latest version ▾ git-branch last updated in 2.30.0

NOM

git-branch - Liste, crée, ou supprime des branches

SYNOPSIS

git branch [--color[=<when>] | --no-color] [--show-current]
	[-v [--abbrev=<longueur> | --no-abbrev]]
	[--column[=<options>] | --no-column] [--sort=<key>]
	[(--merged | --no-merged) [<commit>]]
	[--contains [<commit>]] [--no-contains [<commit>]]
	[--points-at <objet>] [--format=<format>]
	[(-r | --remotes) | (-a | --all)]
	[--list] [<motif>…​]
git branch [--track | --no-track] [-f] <nom-de-branche> [<start-point>]
git branch (--set-upstream-to=<amont> | -u <amont>) [<nom-de-branche>]
git branch --unset-upstream [<nom-de-branche>]
git branch (-m | -M) [<anciennebranche>] <nouvellebranche>
git branch (-c | -C) [<anciennebranche>] <nouvellebranche>
git branch (-d | -D) [-r] <nom-de-branche>…​
git branch --edit-description [<nom-de-branche>]

DESCRIPTION

Si --list est donné, ou s’il n’y a pas d’arguments sans option, les branches existantes sont listées ; la branche actuelle sera surlignée en vert et marquée d’un astérisque. Toutes les branches extraites dans les arbres de travail liés seront mis en évidence en cyan et marqués d’un signe plus. L’option -r ajoute la liste des branches de suivi à distance et l’option` -a` affiche les branches locales et distantes.

Si un <motif> est donné, il est utilisé comme joker du shell pour restreindre la sortie aux branches correspondantes. Si plusieurs motifs sont donnés, une branche est affichée si elle correspond à l’un des motifs.

Notez que lorsque vous fournissez un <motif> `, vous devez utiliser `--list ; sinon, la commande peut être interprétée comme une création de branche.

Avec --contains, montrer seulement les branches qui contiennent le commit indiqué (en d’autres termes, les branches dont les commits sommets sont des descendants du commit indiqué), avec --no-contains inverser. Avec --merged, seules les branches fusionnées dans le commit indiqué (c’est-à-dire les branches dont les commits sommets sont accessibles depuis le commit indiqué) seront listées. Avec --no-merged, seules les branches non fusionnées dans le commit indiqué seront listées. Si l’argument <commit> est manquant, il prend par défaut la valeur "HEAD" (c’est-à-dire le sommet de la branche courante).

La deuxième forme de la commande crée une nouvelle tête de branche nommée <nom-de-branche> qui pointe vers la HEAD actuelle, ou <point-de-départ> si elle est fournie. Dans un cas particulier, pour le <point-de-départ>, vous pouvez utiliser "A...B" comme raccourci pour la base de fusion de A et B s’il y a exactement une base de fusion. Vous pouvez omettre tout au plus un des A et B, auquel cas il s’agit par défaut de HEAD.

Notez que cela créera la nouvelle branche, mais ne fera pas passer l’arbre de travail sur celle-ci ; utilisez "git switch <nouvelle-branche>" pour passer sur la nouvelle branche.

Lorsqu’une branche locale est démarrée à partir d’une branche de suivi à distance, Git configure la branche (plus précisément les entrées de configuration branch.<nom>.remote et branch.<nom>.merge) de façon à ce que git pull fusionne correctement avec la branche de suivi à distance. Ce comportement peut être modifié via le drapeau de configuration global branch.autoSetupMerge. Ce paramètre peut être modifié en utilisant les options ---track et --no-track, et changé plus tard en utilisant git branch --set-upstream-to.

Avec une option -m ou -M, <ancienne-branche> sera renommée en <nouvelle-branche>. Si <ancienne-branche> avait un reflog correspondant, il est renommé pour correspondre à <nouvelle-branche>, et une entrée de reflog est créée pour se souvenir du renommage de la branche. Si <nouvelle-branche> existe déjà, -M doit être utilisé pour forcer le changement de nom.

Les options -c et -C ont exactement la même sémantique que -m et -M, sauf qu’au lieu de renommer la branche, on la copie sous un nouveau nom avec sa configuration et son reflog.

Avec une option -d ou -D, <branchname> sera supprimé. Vous pouvez spécifier plus d’une branche pour la suppression. Si la branche a actuellement un reflog, alors le reflog sera aussi supprimé.

Utilisez -r avec -d pour supprimer les branches de suivi à distance. Notez qu’il est logique de supprimer les branches de suivi à distance uniquement si elles n’existent plus dans le dépôt distant ou si "git fetch" a été configuré pour ne pas les récupérer à nouveau. Voir aussi la sous-commande « prune » de git-remote[1] pour une méthode de nettoyage toutes les branches obsolètes de suivi à distance.

OPTIONS

-d
--delete

Supprimer une branche. La branche doit être entièrement fusionnée dans sa branche amont, ou dans HEAD si aucune branche amont n’a été fixée avec --track ou --set-upstream-to.

-D

Raccourci pour --delete --force.

--create-reflog

Créer le reflog de la branche. Cela active l’enregistrement de toutes les modifications apportées à la branche ref, permettant l’utilisation d’expressions sha1 basées sur la date telles que "<nom-de-branche>@{yesterday}". Notez que dans les dépôts non-nus, les reflogs sont généralement activés par défaut par l’option de configuration core.logAllRefUpdates. La forme négative --no-create-reflog ne fait que remplacer un --create-reflog précédent, mais n’annule pas actuellement le paramètre core.logAllRefUpdates.

-f
--force

Réinitialiser <branche> à <point de départ>, même si <branche> existe déjà. Sans -f, "git branch" refuse de changer une branche existante. En combinaison avec -d (ou --delete), permettre la suppression de la branche indépendamment de son statut de fusion. En combinaison avec -m (ou --move), il est possible de renommer la branche même si le nouveau nom de la branche existe déjà, il en va de même pour -c (ou --copy).

-m
--move

Déplacer/renommer une branche et le reflog correspondant.

-M

Raccourci pour --move-force.

-c
--copy

Copier une branche et le reflog correspondant.

-C

Raccourci pour --copy-force.

--color[=<quand>]

Colorier les branches pour mettre en évidence les branches actuelles, locales et de suivi à distance. La valeur doit être « always » (c-à-d toujours) (valeur par défaut), « never » (c-à-d jamais) ou « auto ».

--no-color

Désactiver les couleurs des branches, même lorsque le fichier de configuration donne la sortie en couleur par défaut. Même chose que --color=never.

-i
--ignore-case

Le tri et le filtrage de branches sont non-sensibles à la casse.

--column[=<options>]
--no-column

Afficher la liste des branches en colonnes. Voir la variable de configuration column.branch pour la syntaxe des options.-- column et --no-column sans options équivalent respectivement à always et never.

Cette option ne s’applique qu’en mode non verbeux.

-r
--remotes

Énumérer ou supprimer (si utilisé avec -d) les branches de suivi à distance. Combiner avec -list pour faire correspondre le(s) motif(s) optionnel(s).

-a
--all

Afficher à la fois les branches de suivi et les branches locales. Combiner avec --list pour faire correspondre un ou des motifs optionnels.

-l
--list

Listes les branches. Avec l’option <pattern>..., par exemple git branch --list 'maint-*', ne lister que les branches qui correspondent au(x) motif(s).

--show-current

Afficher le nom de la branche actuelle. En état de HEAD détachée, rien n’est affiché.

-v
-vv
--verbose

En mode liste, afficher le sha1 et valider le sujet pour chaque tête, ainsi que la relation avec la branche amont (le cas échéant). S’il est donné deux fois, imprimer le chemin de l’arbre de travail lié (le cas échéant) ainsi que le nom de la branche amont (voir aussi git remote show <remote>). Notez que la HEAD de l’arbre de travail actuel n’aura pas son chemin d’accès affiché (il s’agira toujours de votre répertoire actuel).

-q
--quiet

Être plus discret lors de la création ou la destruction d’une branche, en supprimant les messages qui ne sont pas des erreurs.

--abbrev=<longueur>

Modifier la longueur minimale d’affichage du sha1 dans la liste de sortie. La valeur par défaut est 7 et peut être remplacée par l’option de configuration core.abbrev.

--no-abbrev

Afficher les sha1s complets dans la liste des résultats plutôt que de les abréger.

-t
--track

Lors de la création d’une nouvelle branche, configurer les entrées de configuration branch.<nom>.remote et branch.<nom>.merge pour marquer la branche de départ comme étant "en amont" de la nouvelle branche. Cette configuration indiquera à git de montrer la relation entre les deux branches dans "git status" et "git branch -v". En outre, il règle git pull sans arguments de tirer depuis l’amont lorsque la nouvelle branche est extraite.

Ce comportement est le défaut lorsque le point de départ est une branche de suivi à distance. Définissez la variable de configuration branch.autoSetupMerge à false si vous voulez git switch, git checkout et git branch pour toujours se comporter comme si --no-track a été donné. Réglez-le always si vous voulez ce comportement lorsque le point de départ est soit une branche locale ou de suivi à distance.

--no-track

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

--set-upstream

Comme cette option avait une syntaxe confuse, elle n’est plus supportée. Veuillez utiliser --track ou --set-upstream-to à la place.

-u <amont>
--set-upstream-to=<amont>

Configurer les informations de suivi de <nome-de-branche> pour que <amont> soit considéré comme la branche amont de <nome-de-branche>. Si aucun <nom-de-branche> n’est spécifié, alors la branche actuelle est utilisée par défaut.

--unset-upstream

Supprimer les informations en amont pour <nom-de-branche>. Si aucune branche n’est spécifiée, la branche actuelle est utilisée par défaut.

--edit-description

Ouvrir un éditeur et éditer le texte pour expliquer à quoi sert la branche, qui sera utilisée par diverses autres commandes (par exemple format-patch, pull-request et merge (si activé)). Des explications sur plusieurs lignes peuvent être utilisées.

--contains [<commit>]

N’indiquer que les branches qui contiennent le commit spécifié (HEAD si non spécifié). Implique --list.

--no-contains [<commit>]

N’indiquer que les branches qui contiennent le commit spécifié (HEAD si non spécifié). Implique --list.

--merged [<commit>]

N’indiquer que les branches dont les sommets sont accessibles depuis le commit spécifié (HEAD si non spécifié). Implique --list, incompatible avec --no-merged.

--no-merged [<commit>]

N’indiquer que les branches dont les sommets sont accessibles depuis le commit spécifié (HEAD si non spécifié). Implique --list, incompatible avec --no-merged.

<nom-de-branche>

Le nom de la branche à créer ou à supprimer. Le nouveau nom de la branche doit passer tous les contrôles définis par git-check-ref-format[1]. Certains de ces contrôles peuvent restreindre les caractères autorisés dans un nom de branche.

<point_de_départ>

La nouvelle tête de branche pointera sur ce commit. Il peut être donné sous la forme d’un nom de branche, d’un id de commit ou d’une étiquette. Si cette option est omise, la HEAD actuelle sera utilisée à la place.

<anciennebranche>

Nom d’une branche existante à renommer.

<nouvelle_branche>

Le nouveau nom d’une branche existante. Les mêmes restrictions que pour <nom-de-branche> s’appliquent.

--sort=<clé>

Trier en fonction de la clé donnée. Préfixer par - pour trier par ordre décroissant de la valeur. Vous pouvez utiliser l’option --sort=<clé> plusieurs fois, auquel cas la dernière clé devient la clé primaire. Les clés supportées sont les mêmes que celles de git for-each-ref. L’ordre de tri est par défaut la valeur configurée pour la variable branch.sort si elle existe, ou le tri basé sur le nom de référence complet (y compris le préfixe refs/...). Cela liste d’abord les HEAD détachées (si présentes), puis les branches locales et enfin les branches de suivi à distance. Voir git-config[1].

--points-at <objet>

N’indiquer que les branches de l’objet donné.

--format <format>

Une chaîne qui interpole %(fieldame) à partir d’une référence de branche montrée et l’objet vers lequel elle pointe. Le format est le même que celui de git-for-each-ref[1].

CONFIGURATION

Le terme pager.branch n’est respecté que lorsqu’il s’agit d’énumérer des branches, c’est-à-dire lorsque --list est utilisé ou sous-entendu. La valeur par défaut est d’utiliser un pager. Voir git-config[1].

EXEMPLES

Démarrer le développement à partir d’une étiquette connue
$ 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
  1. Cette étape et la suivante pourraient être combinées en une seule étape avec "checkout -b my2.6.14 v2.6.14".

Supprimer une branche inutile
$ 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)
  1. Supprimer les branches de suivi à distance "todo", "html" et "man". La prochaine opération de récupération ou de tirage les créera à nouveau, à moins que vous ne les configuriez autrement. Voir git-fetch[1].

  2. Supprimer la branche "test" même si la branche "master" (ou n’importe quelle branche actuellement extraite) n’a pas tous les commits de la branche test.

Lister les branches d’un distant spécifique
$ git branch -r -l '<distant>/<motif>'                 (1)
$ git for-each-ref 'refs/remotes/<distant>/<motif>'    (2)
  1. L’utilisation de -a associerait <distant> avec toutes les branches locales dont le préfixe est le même que celui de <distant>.

  2. for-each-ref accepte un large éventail d’options. Voir git-for-each-ref[1]

Les motifs devront normalement être cités.

NOTES

Si vous créez une branche sur laquelle vous voulez passer immédiatement, il est plus facile d’utiliser la commande "git switch" avec son option -c pour faire la même chose avec une seule commande.

Les options --contains, --no-contains, --merged et --no-merged servent quatre objectifs connexes mais différents :

  • --contains <commit> est utilisé pour trouver toutes les branches qui devront faire l’objet d’une attention particulière si <commit> devait être rebasé ou modifié, puisque ces branches contiennent le <commit> spécifié.

  • --no-contains <commit> est l’inverse de cela, c’est-à-dire les branches qui ne contiennent pas le <commit> spécifié.

  • --merged est utilisé pour trouver toutes les branches qui peuvent être supprimées en toute sécurité, puisque ces branches sont entièrement contenues par HEAD.

  • --no-merged est utilisé pour trouver les branches qui sont candidates à la fusion avec HEAD, puisque ces branches ne sont pas entièrement contenues par HEAD.

VOIR AUSSI

git-check-ref-format[1], git-fetch[1], git-remote[1], link:user-manual.html#what-is-a-branch [“Comprendre l’historique : Qu’est-ce qu’une branche ?”] dans le manuel d’utilisateur Git.

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 .