-
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
A3.4 Commandes Git - Création de branches et fusion
Création de branches et fusion
Il y a une poignée seulement de commandes qui implémentent la plupart des fonctionnalités de branche et de fusion dans Git.
git branch
La commande git branch
est en fait une sorte dâoutil de gestion de branche.
Elle peut lister les branches que vous avez, créer une nouvelle branche, supprimer des branches et renommer des branches.
La plus grande partie de Les branches avec Git est dédiée à la commande branch
et elle est utilisée tout au long du chapitre.
Nous la prĂ©sentons dâabord dans CrĂ©er une nouvelle branche et nous explorons la plupart de ses autres fonctionnalitĂ©s (listage et suppression) dans Gestion des branches.
Dans Suivre les branches, nous utilisons lâoption git branch -u
pour définir une branche de suivi.
Enfin, nous explorons une partie de ce quâelle fait en arriĂšre-plan dans RĂ©fĂ©rences Git.
git checkout
La commande git checkout
est utilisĂ©e pour passer dâune branche Ă lâautre et en extraire le contenu dans votre rĂ©pertoire de travail.
Nous rencontrons cette commande pour la premiĂšre fois dans Basculer entre les branches avec la commande git branch
.
Nous voyons comment lâutiliser pour commencer Ă suivre des branches avec lâoption --track
dans Suivre les branches.
Nous nous en servons pour réintroduire des conflits de fichiers avec --conflict=diff3
dans Examiner les conflits.
Nous allons plus en détail sur sa relation avec git reset
dans Reset démystifié.
Enfin, nous voyons quelques dĂ©tails dâimplĂ©mentation dans La branche HEAD.
git merge
Lâoutil git merge
est utilisé pour fusionner une ou plusieurs branches dans la branche que vous avez extraite.
Il avancera donc la branche courante au résultat de la fusion.
La commande git merge
est dâabord prĂ©sentĂ©e dans Branches.
Bien quâelle soit utilisĂ©e Ă plusieurs endroits du livre, il nây a que peu de variations de la commande merge
âââgĂ©nĂ©ralement juste git merge <branche>
avec le nom de la seule branche que vous voulez fusionner.
Nous avons couvert comment faire une fusion Ă©crasĂ©e (dans laquelle Git fusionne le travail mais fait comme si câĂ©tait juste un nouveau commit sans enregistrer lâhistorique de la branche dans laquelle vous fusionnez) Ă la toute fin de Projet public dupliquĂ©.
Nous avons exploré une grande partie du processus de fusion et de la commande, y compris la commande -Xignore-all-whitespace
et lâoption --abort
pour abandonner un problÚme du fusion dans Fusion avancée.
Nous avons appris à vérifier les signatures avant de fusionner si votre projet utilise la signature GPG dans Signer des commits.
Enfin, nous avons appris la fusion de sous-arbre dans Subtree Merging.
git mergetool
La commande git mergetool
se contente de lancer un assistant de fusion externe dans le cas oĂč vous rencontrez des problĂšmes de fusion dans Git.
Nous la mentionnons rapidement dans Conflits de fusions (Merge conflicts) et détaillons comment implémenter votre propre outil externe dans Outils externes de fusion et de différence.
git log
La commande git log
est utilisĂ©e pour montrer lâhistorique enregistrĂ© atteignable dâun projet en partant du commit le plus rĂ©cent.
Par dĂ©faut, elle vous montrera seulement lâhistorique de la branche sur laquelle vous vous trouvez, mais elle accepte des branches ou sommets diffĂ©rents ou mĂȘme multiples comme points de dĂ©part de parcours.
Elle est aussi assez souvent utilisée pour montrer les différences entre deux ou plusieurs branches au niveau commit.
Cette commande est utilisĂ©e dans presque tous les chapitres du livre pour exposer lâhistorique dâun projet.
Nous prĂ©sentons la commande et la parcourons plus en dĂ©tail dans Visualiser lâhistorique des validations.
LĂ nous regardons les options -p
et --stat
pour avoir une idée de ce qui a été introduit dans chaque commit et les options --pretty
et --oneline
pour voir lâhistorique de maniĂšre plus concise, avec quelques options simples de filtre de date et dâauteur.
Dans CrĂ©er une nouvelle branche, nous lâutilisons avec lâoption --decorate
pour visualiser facilement oĂč se trouvent nos pointeurs de branche et nous utilisons aussi lâoption --graph
pour voir Ă quoi ressemblent les historiques divergents.
Dans Cas dâune petite Ă©quipe privĂ©e et Plages de commits, nous couvrons la syntaxe brancheA..brancheB
que nous utilisons avec la commande git log
pour voir quels commits sont propres Ă une branche relativement Ă une autre branche.
Dans Plages de commits, nous explorons cela de maniÚre assez détaillée.
Dans Journal de fusion et Triple point, nous couvrons lâutilisation du format brancheAâŠâbrancheB
et de la syntaxe --left-right
pour voir ce qui est dans une branche ou lâautre mais pas dans les deux Ă la fois.
Dans Journal de fusion, nous voyons aussi comment utiliser lâoption --merge
comme aide au dĂ©bogage de conflit de fusion tout comme lâutilisation de lâoption --cc
pour regarder les conflits de commits de fusion dans votre historique.
Dans Raccourcis RefLog, nous utilisons lâoption -g
pour voir le reflog Git Ă travers cet outil au lieu de faire le parcours de la branche.
Dans Recherche, nous voyons lâutilisation des options -S
et -L
pour faire des recherches assez sophistiquĂ©es sur quelque chose qui sâest passĂ© historiquement dans le code comme voir lâhistorique dâune fonction.
Dans Signer des commits, nous voyons comment utiliser --show-signature
pour ajouter un message de validation pour chaque commit dans la sortie de git log
basĂ© sur le fait quâil ait ou quâil nâait pas une signature valide.
git stash
La commande git stash
est utilisĂ©e pour remiser temporairement du travail non validĂ© afin dâobtenir un rĂ©pertoire de travail propre sans avoir Ă valider du travail non terminĂ© dans une branche.
Elle est entiÚrement décrite simplement dans Remisage et nettoyage.
git tag
La commande git tag
est utilisĂ©e pour placer un signet permanent Ă un point spĂ©cifique de lâhistorique du code.
Câest gĂ©nĂ©ralement utilisĂ© pour marquer des choses comme des publications.
Cette commande est prĂ©sentĂ©e et couverte en dĂ©tail dans Ătiquetage et nous la mettons en pratique dans Ătiquetage de vos publications.
Nous couvrons aussi comment crĂ©er une Ă©tiquette signĂ©e avec lâoption -s
et en vĂ©rifier une avec lâoption -v
dans Signer votre travail.