Ce support s’adresse principalement aux développeurs et aux chefs de projet mais également aux professionnels appelés à modifier des codes sources (graphiste, webdesigner, etc.).
Le support présente tout d’abord l’historique des solutions de gestion de versions et leur intérêt. Il permet ensuite au lecteur d’installer et de configurer Git puis de l’utiliser tout au long de cinq chapitres progressifs (fonctionnement des branches, partage d’un dépôt, outils internes...). Un chapitre permet au...
Niveau Confirmé à Expert
Nombre de pages 320 pages
Parution avril 2023
Niveau Confirmé à Expert
Parution avril 2023
Ce support s’adresse principalement aux développeurs et aux chefs de projet mais également aux professionnels appelés à modifier des codes sources (graphiste, webdesigner, etc.).
Le support présente tout d’abord l’historique des solutions de gestion de versions et leur intérêt. Il permet ensuite au lecteur d’installer et de configurer Git puis de l’utiliser tout au long de cinq chapitres progressifs (fonctionnement des branches, partage d’un dépôt, outils internes...). Un chapitre permet au lecteur de bien appréhender git-flow, une méthode pour gérer efficacement les différentes versions d’un projet en entreprise.
Deux chapitres présentent la gestion de versions de manière très pragmatique en utilisant deux scénarios mettant en oeuvre des développeurs. Le premier scénario reprend les bases de l’utilisation de Git et montre l’utilisation des principales commandes dans des cas quasi-réels. Le deuxième scénario met en scène une équipe de développeurs : de l’installation de Git- Lab, jusqu’à une utilisation de la méthode git-flow par l’équipe. Ce chapitre détaille les principales étapes par lesquelles l’équipe doit passer pour versionner un projet existant.
Un chapitre présente une liste d’alias et de commandes prêtes à l’emploi, fruit d’années de pratique de Git de l’auteur, afin que le lecteur utilise Git plus efficacement et puisse obtenir des solutions de problèmes communs. Le dernier chapitre présente un cas réel d’intégration continue 100% Git dans le cadre d’un développement web avec le framework Django.
En annexe, un aide-mémoire permet de visualiser rapidement les principales commandes et leurs principales options. Une présentation de la plateforme GitHub et des changements qu’elle apporte dans la collaboration entre développeurs est également proposée par l’auteur.
2.3 Différences entre le répertoire de travail et HEAD
2.4 Différences introduites par un ou plusieurs commits
2.5 Différences de mots
2.6 Visualiser les blocs de code déplacés
3. Identifier l’auteur d’une ligne de code
4. Rechercher des commits avec le mode pick axe
5. Supprimer les modifications du répertoire de travail
6. Supprimer les modifications de l'index
7. Revenir à un état antérieur
8. Modifier le dernier commit
9. Afficher un résumé des commits
Les branches et les tags
1. Les tags
1.1 Numérotation des versions
1.2 Différents types de tags
1.3 Création des tags
1.4 Création d’un tag annoté
1.5 Liste des tags
1.6 Détails d’un tag
1.7 Envoi des tags vers le dépôt distant
1.8 Suppression d’un tag
2. Les branches
2.1 Liste des branches existantes
2.2 Création d’une branche
2.3 Positionnement sur une branche
2.4 Fusionner deux branches
2.4.1 L'avance rapide
2.4.2 Nettoyer votre dépôt
2.4.3 Les conflits de fusion
2.5 Supprimer une branche
2.6 Rebaser une branche dans une autre
Partager un dépôt
1. Qu'est-ce qu'un dépôt distant ?
2. Créer un dépôt distant
2.1 Pour un nouveau projet
2.2 Pour un projet existant
3. Cloner un dépôt distant
4. Les protocoles d'échange
5. Fonctionnement interne et branches distantes
5.1 Les dépôts distants liés
5.2 Les branches distantes suivies
6. Envoyer ses modifications
7. Recevoir les modifications
Git-Flow : workflow d’entreprise
1. Un système de gestion des branches
1.1 Les branches éternelles
1.1.1 La branche de production (master)
1.1.2 La branche de développement (develop)
1.2 Les branches éphémères
1.2.1 Les branches de versions (release)
1.2.2 Les branches de correctifs (hotfix)
1.2.3 Les branches de fonctionnalités (feature)
1.2.4 Plusieurs commits dans une branche éphémère ?
2. Exemple de workflow
3. Git-Flow intuitif grâce à Tower
3.1 Client Git et Git-Flow
3.2 Cas pratique d’utilisation
Les outils de Git
1. Mettre de côté des modifications avec git stash
2. Dépôts intégrés avec submodules
2.1 Ajout du dépôt intégré
2.2 Cloner un dépôt et ses dépôts intégrés
2.3 Modification des dépôts intégrés
2.4 Supprimer un dépôt intégré
2.5 Inconvénients des dépôts intégrés
3. Retrouver un commit erroné
3.1 Utilisation pratique de git bisect
3.2 Automatiser git bisect
4. Journal des références (reflog)
5. Les hooks
5.1 Les différents types de hooks
5.2 Comment utiliser les hooks ?
5.3 Exemple de hook : validation de message
5.4 Partager les hooks dans le dépôt
6. Les notes Git
6.1 Créer une note
6.2 Afficher les notes
6.2.1 Lister les notes
6.2.2 Consulter les notes d'un commit
6.3 Éditer une note
6.4 Supprimer une note
6.5 Envoyer les notes vers le serveur
Scénario de développeur indépendant
1. But de ce chapitre
2. Contexte du scénario
3. Création du dépôt
4. Début du développement
5. Enregistrer des modifications
6. Bitbucket
6.1 Création d'un compte
6.2 Envoyer un dépôt local vers Bitbucket
6.3 Éditer un fichier sur Bitbucket
6.4 Récupérer les modifications du dépôt distant
7. Intégrer un nouveau développement
7.1 Vérifier son code avant l'indexation
7.2 Commiter le nouveau développement
8. Annuler les modifications d'un fichier
9. .gitignore : ignorer une bibliothèque
10. Commiter tous les fichiers ajoutés ou modifiés
11. Envoyer les commits au dépôt distant
12. Afficher les différences entre deux commits
13. Cloner le dépôt distant
14. Une branche, ça sert à quoi ?
15. Changer de branche
16. Fusionner deux branches
Scénario d’équipe
1. Contexte du scénario
2. Aperçu du projet
2.1 Installation de Python
2.2 Récupération du dépôt
2.3 Installation des dépendances Python
2.4 Initialisation des dépôts intégrés
2.5 Génération des bibliothèques
2.6 Création du fichier de configuration
2.7 Création de la base
2.8 Création d'un compte root
2.9 Lancement du serveur
3. Installation de GitLab
4. Création des comptes utilisateurs
5. Création du projet
6. Attribuer des projets aux utilisateurs
7. Premier commit du projet
7.1 Rédaction du fichier .gitignore
7.1.1 Ignorer les bibliothèques
7.1.2 Ignorer les fichiers propres à la technologie
7.1.3 Ignorer les données sensibles
7.1.4 Ajouter les dépôts intégrés
7.1.5 Le fichier README
7.2 Commit du projet
7.3 Création de la branche develop pour Git-Flow
8. Phase de développement
8.1 Fonctionnalité graphique
8.2 Correctif de temps négatif
8.3 Intégration du correctif
8.4 Fonctionnalité type de tâche
8.5 Finalisation des graphiques
8.6 Finalisation des types de tâche
8.7 Création de la branche de version
8.8 Export CSV
8.9 Correctif de version
8.10 Nouvelle version stable
8.11 Finalisation de l’export CSV
9. Mise en ligne du dépôt sur GitHub
9.1 Création d'un compte GitHub
9.2 Création d'un dépôt
9.3 Ajout du remote au dépôt local
9.4 Envoi des branches
9.5 Le fichier LICENSE
9.6 Le fichier README
Productivité maximale avec Git
1. Alias prêts à l'emploi
1.1 Alias simples
1.1.1 git last
1.1.2 git aa
1.1.3 git bv
1.1.4 git ba
1.1.5 git bd
1.1.6 git bdp
1.1.7 git ca
1.1.8 git cb
1.1.9 git cmf
1.1.10 git co
1.1.11 git di
1.1.12 git dc
1.1.13 git mnff
1.1.14 git st
1.1.15 git tg
1.1.16 git pu
1.1.17 git ss
1.1.18 git ssu
1.1.19 git sr
1.1.20 git srp
1.1.21 git sl
1.1.22 git sp
1.1.23 git sa
1.1.24 git sd_f
1.1.25 git sb
1.1.26 git na
1.1.27 git nl
1.1.28 git napp
1.1.29 git ne
1.1.30 git ns
1.1.31 git nr
1.1.32 git ready
1.2 Alias complexes
1.2.1 git bnew
1.2.2 git bold
1.2.3 git ll
1.2.4 git ld
1.2.5 git ls
1.2.6 git ln
1.2.7 git slv
1.2.8 git np
1.2.9 git bvn
1.2.10 git churn
1.2.11 git srr
1.2.12 git spr
1.2.13 git sar
1.2.14 git sdr
1.3 Récupérer les alias sur GitHub
2. Commandes prêtes à l’emploi
2.1 Commandes liées à la configuration
2.1.1 Fichier de configuration actif pour une option
2.1.2 Afficher sa configuration
2.1.3 Éditer facilement un niveau de configuration
2.2 Commandes d'affichage
2.2.1 Afficher les informations techniques d'un commit
2.2.2 Afficher les parents des commits
2.2.3 Afficher les fichiers en conflit
2.2.4 Afficher la liste des fichiers modifiés
2.2.5 Afficher l'ancêtre commun
2.2.6 Afficher le premier commit d'une branche
2.2.7 Utiliser git show en masquant le diff
2.2.8 Vérifier une branche sur un dépôt distant
2.2.9 Fusionner des branches sans ancêtre commun
2.2.10 Afficher les dépôts distants et leur lien externe
2.2.11 Afficher les fichiers modifiés par un commit
2.2.12 Afficher le chemin du dépôt versionné
2.2.13 Consulter l'historique des commandes git
2.2.14 Afficher le nombre de commits par auteur
2.2.15 Afficher le nombre de commits d'un auteur
2.2.16 Afficher la dernière date de modification des branches
2.2.17 Lister les branches contenant un commit précis
2.2.18 Afficher l'historique avec les diff
2.2.19 Chercher un texte/regex dans les commits
2.2.20 Chercher un texte/regex dans les stashes
2.2.21 Lister les commits des branches
2.2.22 Comparer un fichier antérieur
2.2.23 Afficher les branches déjà fusionnées dans master
2.2.24 Lister les branches non mergées dans master
2.2.25 Lister les commits d'une branche non mergée à master
2.3 Commandes de manipulation
2.3.1 Supprimer ou inverser les modifications d'un commit
2.3.2 Supprimer du dépôt les fichiers déjà supprimés du projet
2.3.3 Retirer des modifications de l'index
2.3.4 Récupérer le fichier d'un autre commit
2.3.5 Supprimer les fichiers non suivis du répertoire
2.3.6 Supprimer les modifications des fichiers suivis
2.3.7 Supprimer une branche distante
Git en déploiement continu
1. Objectifs du chapitre
2. Le projet
3. Présentation de Django
4. Développement de la version initiale
4.1 Installation
4.2 Création du projet
4.2.1 Création du projet Django
4.2.2 Création du fichier .gitignore
4.2.3 Enregistrement des bibliothèques Python
4.2.4 Premier commit
4.3 Création des applications users et articles
4.4 Création des modèles Django
4.4.1 Le modèle BaseModel
4.4.2 Le modèle User
4.4.3 Le modèle Article
4.5 Mise en place du module d'administration
4.5.1 Démarrer le serveur de développement
4.5.2 Création des pages utilisateur
4.5.3 Templates parents
4.5.4 Liste des articles
4.5.5 Page de consultation d'un article
4.5.6 Page "À propos"
5. Déploiement initial
5.1 Configuration des identifiants SSH
5.2 Création du site web Webfaction
5.3 Création des applications Webfaction
5.4 Création de la base de données
5.5 Externalisation du dépôt de la configuration
5.6 Préparer le dossier du projet et créer le dépôt
5.7 Configuration du dépôt en déploiement automatisé
5.8 Configuration du remote et premier push
5.9 Création de l'environnement virtuel
5.10 Configuration d'Apache
5.11 Envoi de la configuration de production
5.12 Exécuter les migrations
5.13 Synchroniser les fichiers statiques
5.14 Redémarrer Apache
6. Déploiement automatisé
6.1 Développement du hook dans le dépôt
6.2 Configuration du dépôt distant
7. Fonctionnalité : champ WYSIWYG pour l'article
7.1 Développement
7.2 Déploiement automatisé
Aide-mémoire
1. Les références
1.1 HEAD
1.2 Les branches
1.3 Les tags
1.4 Référence des ancêtres
2. Les commandes
2.1 git add
2.2 git archive
2.3 git bisect
2.4 git blame
2.5 git branch
2.6 git checkout
2.7 git cherry-pick
2.8 git clean
2.9 git clone
2.10 git commit
2.11 git config
2.12 git diff
2.13 git fetch
2.14 git gc
2.15 git help
2.16 git init
2.17 git log
2.18 git merge
2.19 git mv
2.20 git pull
2.21 git push
2.22 git rebase
2.23 git reflog
2.24 git remote
2.25 git reset
2.26 git revert
2.27 git rm
2.28 git show
2.29 git stash
2.30 git submodule
2.31 git tag
3. GitHub
3.1 Gestion des dépôts
3.2 GitHub-Flow (fork et pull request)
3.3 Les "issues" GitHub
Index
Samuel DAUZON
Samuel DAUZON est développeur back-end chez Opendatasoft. Il est le créateur de Je suis ma santé, une application dédiée aux nutritionnistes/diététiciens et à leurs patients. Déjà auteur des livres Meteor et Ionic aux Editions ENI et Django Essentials aux éditions Packt Publishing, il partage volontiers son expertise sur le développement et sur Git, pour le plus grand bénéfice des lecteurs.