Changer de branche dans Git
Lorsque vous travaillez sur un projet, vous gérez probablement de nombreuses branches différentes dans votre dépôt (référentiel). Au fur et à mesure que le nombre de branches augmente, vous devrez peut-être travailler sur différentes tâches en parallèle, passant d'une branche à l'autre tout le temps. Par conséquent, vous devrez peut-être changer de branche très fréquemment. Dans ce tutoriel, vous allez apprendre comment changer facilement de branche sur Git.
Changer de branche en utilisant git checkout
Le moyen le plus simple de changer de branche sur Git est d'utiliser la commande «git checkout» et de spécifier le nom de la branche vers laquelle vous souhaitez basculer. Si la branche de destination n'existe pas, vous devez ajouter le paramètre -b, sinon vous ne pourrez pas basculer vers cette branche. La syntaxe est la suivante :
git checkout branche_existe |
git checkout -b nouvelle_branche |
Par exemple, supposons que vous souhaitiez basculer vers la branche master vers une autre branche nommée feature dans votre dépôt. Tout d'abord, assurez-vous que la branche cible existe en exécutant la commande git branch avec une commande comme ceci :
git branch |
vous obtiendra un résultat ressemblant à ceci :
* master feature |
Maintenant que vous vous êtes assuré que votre branche existe, vous pouvez passer de la branche master à la branche feature en exécutant la commande «git checkout» :
git checkout feature |
C'est fait ! Vous êtes passé avec succès à votre branche feature avec la commande git checkout. En revanche, si vous essayez de basculer vers une branche inexistante, avec par exemple la commande suivante :
git checkout branche-n-existe-pas |
vous verrez le message d'erreur suivant :
error: pathspec 'branche-n-existe-pas' did not match any file(s) known to git |
Pour résoudre cette erreur, vous devrez ajouter le paramètre -b (pour une nouvelle branche) à la commande git checkout :
git checkout -b branche-n-existe-pas |
vous obtiendrez un résultat ressemblant à ceci :
Switched to a new branch 'branche-n-existe-pas' |
Maintenant que vous en savez plus sur la commande git checkout, voyons une autre commande utile pour changer de branche à l'aide de Git.
Changer de branche en utilisant git switch
Un moyen plus naturel de changer de branche sur Git est d'utiliser la commande «git switch» et de spécifier le nom de la branche vers laquelle vous voulez basculer. Si la branche de destination n'existe pas, vous devez spécifier l'option -c (pour créer une branche), sinon vous obtiendrez un message d'erreur lors du passage à cette branche. Voici leur syntaxe :
git switch branche_existe |
git switch -c branche_n_existe_pas |
Encore une fois, à titre d'exemple, disons que vous souhaitez basculer vers la branche feature à partir de la branche master. Pour passer de la branche master à la branche feature, utilisez la commande «git switch» et spécifiez la branche de destination (étant «feature» dans ce cas) :
git switch feature |
vous obtiendrez un résultat ressemblant à ceci :
Switched to branch 'feature' Your branch is up to date with 'origin/feature'. |
En revanche, si vous essayez de basculer vers une branche non existante avec une commande comme ceci :
git switch branche-non-existante |
vous obtiendrez le message d'erreur suivant :
fatal: invalid reference: branche-non-existante |
Pour résoudre cette erreur, assurez-vous d'ajouter le paramètre -c à la commande «git switch» pour spécifier que vous souhaitez basculer vers une nouvelle branche.
git switch -c branche-non-existante |
vous obtiendrez un résultat ressemblant à ceci :
Switched to a new branch 'branche-non-existante' Branch 'branche-non-existante' set up to track remote branch 'branche-non-existante' from 'origin'. |
Félicitations, vous êtes maintenant passé avec succès dans une autre branche et vous pouvez commencer à travailler dessus.
Branche à distance checkout sur Git
Dans certains cas, vous pouvez être intéressé par l'extraction des branches à distances de votre dépôt (référentiel) à distance. Afin de passer à une branche à distance, assurez-vous de récupérer votre branche à distance avec «git fetch» en premier. Vous pouvez ensuite y accéder en exécutant «git checkout» avec le paramètre -t et le nom de la branche.
git fetch git checkout -t nom_a_distance/nom_de_branche |
Le paramètre -t dans le git checkout signifie «track» et elle est utilisée pour créer votre branche et configurer automatiquement la branche amont vers la branche à distante. À titre d'exemple, disons que vous avez une branche nommée "branche-a-distance" sur le "origin" à distance. Afin de récupérer la branche à distante, vous devrez exécuter la commande d'extraction et spécifier les informations spécifiées ci-dessus :
git checkout -t origin/branche-a-distance |
vous obtiendrez un résultat ressemblant à ceci :
Branch 'branche-a-distance' set up to track remote branch 'branche-a-distance' from 'origin'. Switched to a new branch 'branche-a-distance' |
Comme vous pouvez le voir, les informations de suivi à distance ont été définies automatiquement : par conséquent, si vous validez des modifications, vous les pousserez automatiquement vers la branche en amont.
Extraire une nouvelle branche à partir d'un commit spécifique
Dans certains cas, vous devrez peut-être basculer vers une nouvelle branche, mais vous souhaitez qu'elle démarre à partir d'un commit spécifique sur la branche. Afin d'extraire une nouvelle branche à partir d'un point de départ spécifique, vous devez exécuter la commande «git checkout» et spécifier l'option -B, ainsi que la branche et son point de départ. Voici la syntaxe :
git checkout -B branche point_depart |
Afin de récupérer vers un point de départ spécifique, vous devrez lister les commits effectués dans votre référentiel à l'aide de la commande «git log». Utiliser par exemple la commande suivante :
git log --oneline --graph |
vous obtiendrez un résultat ressemblant à ceci :
* 1b9c10c Version 2 commit (master, HEAD) * 32559fb Version 1.0 commit * 0a9ee48 added files * ad6803f first commit |
Comme vous pouvez le voir, le HEAD de la branche master est à 1b9c10c mais nous voulons récupérer le commit juste avant HEAD (étant 32559fb). Pour basculer vers la branche master, sur ce commit spécifique, nous allons exécuter la commande «git checkout» et spécifier la branche «master» ainsi que le commit SHA :
git checkout -B master 32559fb |
vous obtiendrez un résultat ressemblant à ceci :
Switched to and reset branch 'master' |
Afin de vérifier que vous êtes correctement sur un commit spécifique, vous pouvez utiliser à nouveau la commande «git log».
git log --oneline --graph |
Ainsi vous avez réussi à passer à une autre branche sur un commit spécifique !