-
1. DĂ©marrage rapide
-
2. Les bases de Git
-
3. Les branches avec Git
-
4. Git sur le serveur
- 4.1 Protocoles
- 4.2 Installation de Git sur un serveur
- 4.3 Génération des clés publiques SSH
- 4.4 Mise en place du serveur
- 4.5 DĂ©mon (Daemon) Git
- 4.6 HTTP intelligent
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Git hébergé
- 4.10 Résumé
-
5. Git distribué
-
6. GitHub
-
7. Utilitaires Git
- 7.1 SĂ©lection des versions
- 7.2 Indexation interactive
- 7.3 Remisage et nettoyage
- 7.4 Signer votre travail
- 7.5 Recherche
- 7.6 RĂ©Ă©crire lâhistorique
- 7.7 Reset démystifié
- 7.8 Fusion avancée
- 7.9 Rerere
- 7.10 DĂ©boguer avec Git
- 7.11 Sous-modules
- 7.12 Empaquetage (bundling)
- 7.13 Replace
- 7.14 Stockage des identifiants
- 7.15 Résumé
-
8. Personnalisation de Git
- 8.1 Configuration de Git
- 8.2 Attributs Git
- 8.3 Crochets Git
- 8.4 Exemple de politique gérée par Git
- 8.5 Résumé
-
9. Git et les autres systĂšmes
- 9.1 Git comme client
- 9.2 Migration vers Git
- 9.3 Résumé
-
10. Les tripes de Git
- 10.1 Plomberie et porcelaine
- 10.2 Les objets de Git
- 10.3 Références Git
- 10.4 Fichiers groupés
- 10.5 La refspec
- 10.6 Les protocoles de transfert
- 10.7 Maintenance et récupération de données
- 10.8 Les variables dâenvironnement
- 10.9 Résumé
-
A1. Annexe A: Git dans dâautres environnements
- A1.1 Interfaces graphiques
- A1.2 Git dans Visual Studio
- A1.3 Git dans Visual Studio Code
- A1.4 Git dans IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git dans Sublime Text
- A1.6 Git dans Bash
- A1.7 Git dans Zsh
- A1.8 Git dans PowerShell
- A1.9 Résumé
-
A2. Annexe B: Embarquer Git dans vos applications
- A2.1 Git en ligne de commande
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Commandes Git
- A3.1 Installation et configuration
- A3.2 Obtention et création des projets
- A3.3 Capture dâinstantanĂ© basique
- A3.4 Création de branches et fusion
- A3.5 Partage et mise Ă jour de projets
- A3.6 Inspection et comparaison
- A3.7 DĂ©bogage
- A3.8 Patchs
- A3.9 Courriel
- A3.10 SystĂšmes externes
- A3.11 Administration
- A3.12 Commandes de plomberie
3.3 Les branches avec Git - Gestion des branches
Gestion des branches
Maintenant que vous avez crĂ©Ă©, fusionnĂ© et supprimĂ© des branches, regardons de plus prĂšs les outils de gestion des branches qui sâavĂšreront utiles lors dâune utilisation intensive des branches.
La commande git branch
permet en fait bien plus que la simple création et suppression de branches.
Si vous la lancez sans argument, vous obtenez la liste des branches courantes :
$ git branch
iss53
* master
testing
Notez le caractĂšre *
qui préfixe la branche master
 : il indique la branche courante (câest-Ă -dire la branche sur laquelle le pointeur HEAD
se situe).
Ceci signifie que si, dans cette situation, vous validez des modifications (grĂące Ă git commit
), le pointeur de la branche master
sera mis Ă jour pour inclure vos modifications.
Pour visualiser la liste des derniers commits sur chaque branche, vous pouvez utiliser le commande git branch -v
 :
$ git branch -v
iss53 93b412c fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 add scott to the author list in the readmes
--merged
et --no-merged
sont des options trÚs utiles qui permettent de filtrer les branches de cette liste selon que vous les avez ou ne les avez pas encore fusionnées avec la branche courante.
Pour voir quelles branches ont déjà été fusionnées dans votre branche courante, lancez git branch --merged
 :
$ git branch --merged
iss53
* master
Comme vous avez déjà fusionné iss53
un peu plus tĂŽt, vous la voyez dans votre liste.
Les branches de cette liste qui ne comportent pas le préfixe *
peuvent gĂ©nĂ©ralement ĂȘtre effacĂ©es sans risque au moyen de git branch -d
puisque vous avez déjà intégré leurs modifications dans une autre branche et ne risquez donc pas de perdre quoi que ce soit.
Pour visualiser les branches qui contiennent des travaux qui nâont pas encore Ă©tĂ© fusionnĂ©s, vous pouvez utiliser la commande git branch --no-merged
 :
$ git branch --no-merged
testing
Ceci affiche votre autre branche.
Comme elle contient des modifications qui nâont pas encore Ă©tĂ© intĂ©grĂ©es, essayer de les supprimer par la commande git branch -d
se solde par un échec :
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
Si vous souhaitez rĂ©ellement supprimer cette branche et perdre ainsi le travail rĂ©alisĂ©, vous pouvez tout de mĂȘme forcer la suppression avec lâoption -D
, comme lâindique le message.
Astuce
|
Les options dĂ©crites ci-dessus, Vous pouvez toujours fournir un argument additionnel pour interroger lâĂ©tat de fusion par rapport Ă une autre branche sans extraire cette branche avant, comme lorsquâon se demande ce qui nâa pas Ă©tĂ© fusionnĂ© dans la branche
|
Renommer une branche
Attention
|
Ne renommez pas les branches qui sont encore utilisĂ©es par dâautres collaborateurs. Ne renommez pas une branche telle que master/main/mainline avant dâavoir lu la section « Renommer la branche master ». |
Supposez que vous avez une branche appelĂ©e mauvais-nom-de-branche et que vous voulez la changer en nom-de-branche-corrigĂ©, tout en conservant lâhistorique. Vous voulez aussi changer le nom de la branche sur le serveur distant (GitHub, GitLab, ou tout autre serveur). Comment sây prendre ?
Renommez la branche localement avec la commande git branch --move
 :
$ git branch --move mauvais-nom-de-branche nom-de-branche-corrigé
Ceci remplace votre mauvais-nom-de-branche par nom-de-branche-corrigĂ©, mais seulement localement pour lâinstant. Pour montrer aux autres la branche corrigĂ©e sur le serveur distant, poussez-la :
$ git push --set-upstream origin nom-de-branche-corrigé
Faisons un point rapide :
$ git branch --all
* nom-de-branche-corrigé
main
remotes/origin/mauvais-nom-de-branche
remotes/origin/nom-de-branche-corrigé
remotes/origin/main
Notez que vous ĂȘtes sur la branche nom-de-branche-corrigĂ©. La branche corrigĂ©e est disponible sur le serveur distant. Cependant la branche mauvaise est encore aussi prĂ©sente sur le serveur distant. Vous pouvez supprimer la branche mauvaise du serveur distant :
$ git push origin --delete mauvais-nom-de-branche
à présent, le mauvais nom de branche est complÚtement remplacé par le nom de branche corrigé.
Changer le nom de la branche master
Avertissement
|
Changer le nom dâune branche telle que master/main/mainline/default va casser les outils dâintĂ©gration de service et dâaide, ainsi que les scripts de construction/publication que votre dĂ©pĂŽt utilise. Avant de le faire, assurez-vous de tout couvrir avec vos collaborateurs. Assurez-vous aussi de rechercher prĂ©cisĂ©ment et de mettre Ă jour toutes les rĂ©fĂ©rences Ă la vieille branche dans votre dĂ©pĂŽt et dans les scripts. |
Renommez votre branche locale master
en main
avec la commande suivante :
$ git branch --move master main
Il nây a plus de branche master
en local, parce quâelle a Ă©tĂ© renommĂ©e en branche main
.
Pour avertir les autres de cette branch main
, vous devez la pousser sur le serveur distant
Cela rend la branche renommée disponible sur le serveur distant.
$ git push --set-upstream origin main
Enfin, nous finissons dans lâĂ©tat suivant :
git branch --all
* main
remotes/origin/HEAD -> origin/master
remotes/origin/main
remotes/origin/master
Votre branche locale master
a disparu, car elle a été remplacée par la branche main
.
La branche main
est aussi disponible sur le serveur distant.
Mais le serveur distant a toujours la branche master
.
Les autres collaborateurs vont continuer Ă utiliser la branche master
comme base pour leurs travaux, jusquâĂ ce que vous fassiez quelques modifications supplĂ©mentaires.
Maintenant, vous avez quelques tùches supplémentaires à faire pour terminer la transition :
-
Tous les autres projets dĂ©pendant de celui-ci doivent ĂȘtre avoir leur configuration et leur code modifiĂ©s en consĂ©quence.
-
Mettez Ă jours tous vos fichiers de configuration de test.
-
Ajustez les scripts de construction et de publication.
-
Redirigez les réglages sur votre hÎte de dépÎt concernant les choses telles que la branche par défaut du dépÎt, le rÚgles de fusion et toute autre configuration qui a trait aux noms de branche.
-
Mettez Ă jour les rĂ©fĂ©rences Ă lâancienne branche dans la documentation.
-
Fermez ou fusionnez toutes les demandes de tirage destinĂ©es Ă lâancienne branche.
AprĂšs toutes ces tĂąches, et sâĂȘtre assurĂ© que la branche main se comporte comme la branche master, vous pouvez supprimer la branche master :
$ git push origin --delete master