Git
Ramification
Recherche…
Syntaxe
-
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
-
git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
-
git branch --unset-upstream [<branchname>]
-
git branch (-m | -M) [<oldbranch>] <newbranch>
-
git branch (-d | -D) [-r] <branchname>…
-
git branch --edit-description [<branchname>]
-
git branch [--color[=<when>] | --no-color] [-r | -a] [--list] [-v [--abbrev=<length> | --no-abbrev]] [--column[=<options>] | --no-column] [(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>] [--points-at <object>] [<pattern>…]
Paramètres
Paramètre | Détails |
---|---|
-d, --delete | Supprimer une branche. La branche doit être complètement fusionnée dans sa branche amont, ou dans HEAD si aucun amont n'a été défini avec --track ou --set-upstream |
-RÉ | Raccourci pour --delete --force |
-m, --move | Déplacer / renommer une branche et le reflog correspondant |
-M | Raccourci pour --move --force |
-r, --remotes | Lister ou supprimer (si utilisé avec -d) les branches de suivi à distance |
-a, --tous | Liste à la fois les branches de suivi à distance et les succursales locales |
--liste | Activer le mode liste. git branch <pattern> essaierait de créer une branche, utilisez git branch --list <pattern> pour lister les branches correspondantes |
--set-upstream | Si la branche spécifiée n'existe pas encore ou si --force a été donné, agit exactement comme --track . Sinon, configure la configuration comme --track lors de la création de la branche, sauf que la branche ne change pas |
Remarques
Chaque dépôt git a une ou plusieurs branches . Une branche est une référence nommée à HEAD
d'une séquence de commits.
Un git a une branche de courant (indiqué par un *
dans la liste des noms de branche imprimés par la git branch
commande), chaque fois que vous créez un nouveau commit avec le git commit
commande, votre nouveau commit devient la HEAD
de la branche actuelle, et le HEAD précédent devient le parent du nouvel commit.
Une nouvelle succursale aura le même HEAD
que la succursale à partir de laquelle elle a été créée jusqu'à ce que quelque chose soit engagé dans la nouvelle succursale.
Liste des succursales
Git fournit plusieurs commandes pour lister les branches. Toutes les commandes utilisent la fonction de git branch
, qui fournira une liste de certaines branches, en fonction des options placées sur la ligne de commande. Si possible, Git indiquera la branche actuellement sélectionnée avec une étoile à côté.
Objectif | Commander |
---|---|
Liste des branches locales | git branch |
Répertorier les branches locales | git branch -v |
Liste des branches distantes et locales | git branch -a OR git branch --all |
Liste des branches distantes et locales (verbose) | git branch -av |
Liste des branches distantes | git branch -r |
Liste des succursales distantes avec la dernière validation | git branch -rv |
Liste des branches fusionnées | git branch --merged |
Liste des branches non fusionnées | git branch --no-merged |
Liste des branches contenant un commit | git branch --contains [<commit>] |
Notes :
- Ajouter un
v
supplémentaire à-v
par exemple$ git branch -avv
ou$ git branch -vv
affichera également le nom de la branche en amont. - Les branches affichées en rouge sont des branches éloignées
Créer et vérifier de nouvelles branches
Pour créer une nouvelle branche tout en restant sur la branche en cours, utilisez:
git branch <name>
Généralement, le nom de la succursale ne doit pas contenir d'espaces et est soumis à d'autres spécifications répertoriées ici . Pour basculer vers une branche existante:
git checkout <name>
Pour créer une nouvelle branche et y basculer:
git checkout -b <name>
Pour créer une branche à un point autre que le dernier commit de la branche en cours (également appelée HEAD), utilisez l'une des commandes suivantes:
git branch <name> [<start-point>]
git checkout -b <name> [<start-point>]
Le <start-point>
peut être toute révision connue de git (par exemple, un autre nom de branche, commit SHA ou une référence symbolique telle que HEAD ou un nom de tag):
git checkout -b <name> some_other_branch
git checkout -b <name> af295
git checkout -b <name> HEAD~5
git checkout -b <name> v1.0.5
Pour créer une branche à partir d'une branche distante (la valeur par défaut <remote_name>
est l'origine):
git branch <name> <remote_name>/<branch_name>
git checkout -b <name> <remote_name>/<branch_name>
Si un nom de branche donné est trouvé sur une seule télécommande, vous pouvez simplement utiliser
git checkout -b <branch_name>
ce qui équivaut à
git checkout -b <branch_name> <remote_name>/<branch_name>
Parfois, vous devrez peut-être déplacer plusieurs de vos commits récents vers une nouvelle succursale. Ceci peut être réalisé en ramifiant et en "roulant", comme ceci:
git branch <new_name>
git reset --hard HEAD~2 # Go back 2 commits, you will lose uncommitted work.
git checkout <new_name>
Voici une explication illustrative de cette technique:
Initial state After git branch <new_name> After git reset --hard HEAD~2
newBranch newBranch
↓ ↓
A-B-C-D-E (HEAD) A-B-C-D-E (HEAD) A-B-C-D-E (HEAD)
↑ ↑ ↑
master master master
Supprimer une branche localement
$ git branch -d dev
Supprime la branche nommée dev
si ses modifications sont fusionnées avec une autre branche et ne seront pas perdues. Si la branche dev
contient des modifications qui n'ont pas encore été fusionnées et qui seraient perdues, git branch -d
échouera:
$ git branch -d dev
error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.
Par le message d'avertissement, vous pouvez forcer la suppression de la branche (et perdre les modifications non fusionnées dans cette branche) en utilisant l'indicateur -D
:
$ git branch -D dev
Découvrez une nouvelle branche de suivi d'une succursale distante
Il existe trois façons de créer une nouvelle feature
branche qui suit l’ origin/feature
branche distante:
-
git checkout --track -b feature origin/feature
, -
git checkout -t origin/feature
, -
git checkout feature
- en supposant qu'il n'y a pas de branche d'feature
locale et qu'il n'y a qu'une seule télécommande avec la branche defeature
.
Pour définir en amont le suivi de la branche distante - tapez:
-
git branch --set-upstream-to=<remote>/<branch> <branch>
-
git branch -u <remote>/<branch> <branch>
où:
-
<remote>
peut être:origin
,develop
ou celui créé par l'utilisateur, -
<branch>
est la branche de l'utilisateur à suivre sur la télécommande.
Pour vérifier quelles succursales distantes vos branches locales suivent:
-
git branch -vv
Renommer une branche
Renommez la branche que vous avez extraite:
git branch -m new_branch_name
Renommez une autre branche:
git branch -m branch_you_want_to_rename new_branch_name
Ecraser un seul fichier dans le répertoire de travail en cours avec le même fichier d'une autre branche
Le fichier extrait écrasera les modifications que vous n'aviez pas encore effectuées dans ce fichier.
Cette commande extrait le fichier file.example
(situé dans le répertoire path/to/
) et remplace toutes les modifications apportées à ce fichier.
git checkout some-branch path/to/file
some-branch
peut être n'importe quel tree-ish
connu (voir Sélection de révision et gitrevisions pour plus de détails)
Vous devez ajouter --
avant le chemin si votre fichier pourrait être confondu avec un fichier (facultatif). Aucune autre option ne peut être fournie après le --
.
git checkout some-branch -- some-file
Le second some-file
est un fichier dans cet exemple.
Supprimer une branche distante
Pour supprimer une branche sur le référentiel distant d' origin
, vous pouvez utiliser pour Git version 1.5.0 et ultérieure
git push origin :<branchName>
et à partir de la version 1.7.0 de Git, vous pouvez supprimer une branche distante en utilisant
git push origin --delete <branchName>
Pour supprimer une branche de suivi à distance locale:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
Pour supprimer une branche localement. Notez que cela ne supprimera pas la branche si elle a des modifications non fusionnées:
git branch -d <branchName>
Pour supprimer une branche, même si elle comporte des modifications non fusionnées:
git branch -D <branchName>
Créer une branche orpheline (c'est-à-dire une branche sans engagement parent)
git checkout --orphan new-orphan-branch
Le premier commit effectué sur cette nouvelle branche n'aura pas de parents et ce sera la racine d'un nouvel historique totalement déconnecté de toutes les autres branches et validations.
Poussez la branche à distance
Utilisez pour pousser les validations effectuées sur votre branche locale vers un référentiel distant.
La commande git push
prend deux arguments:
- Un nom distant, par exemple,
origin
- Un nom de branche, par exemple,
master
Par exemple:
git push <REMOTENAME> <BRANCHNAME>
Par exemple, vous exécutez généralement git push origin master
pour transmettre vos modifications locales à votre référentiel en ligne.
Utiliser -u
(abréviation de --set-upstream
) configurera les informations de suivi pendant la diffusion.
git push -u <REMOTENAME> <BRANCHNAME>
Par défaut, git
envoie la branche locale à une branche distante du même nom. Par exemple, si vous avez une new-feature
appelée locale, si vous appuyez sur la branche locale, elle créera également une new-feature
branche distante. Si vous souhaitez utiliser un autre nom pour la branche à distance, ajoutez le nom distant après le nom de la branche locale, séparés par :
:
git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME>
Déplacer la branche actuelle HEAD vers un commit arbitraire
Une branche est juste un pointeur sur un commit, vous pouvez donc le déplacer librement. Pour que la branche fasse référence au commit aabbcc
, aabbcc
la commande
git reset --hard aabbcc
Veuillez noter que cela écrasera le commit actuel de votre branche et, par conséquent, tout son historique. Vous pourriez perdre du travail en émettant cette commande. Si tel est le cas, vous pouvez utiliser le reflog pour récupérer les commits perdus. Il est conseillé d’exécuter cette commande sur une nouvelle branche au lieu de celle en cours.
Cependant, cette commande peut être particulièrement utile lors de la modification ou de la modification de l'historique.
Passage rapide à la branche précédente
Vous pouvez rapidement passer à la branche précédente en utilisant
git checkout -
Recherche dans les branches
Pour répertorier les branches locales contenant une validation ou une balise spécifique
git branch --contains <commit>
Pour répertorier les branches locales et distantes contenant une validation ou une balise spécifique
git branch -a --contains <commit>