-
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.