Workflows Git avancés

GitFlow

GitFlow est un modèle de branches pour la gestion des versions :

# Installation de git-flow
apt-get install git-flow  # Debian/Ubuntu
brew install git-flow     # macOS

# Initialisation
git flow init

# Créer une fonctionnalité
git flow feature start ma-feature
git flow feature finish ma-feature

# Créer une version
git flow release start 1.0.0
git flow release finish 1.0.0

Rebase interactif

Nettoyer l'historique des commits :

# Rebase interactif des 3 derniers commits
git rebase -i HEAD~3

# Commandes disponibles dans le rebase
# pick   - garder le commit
# reword - modifier le message
# squash - fusionner avec le commit précédent
# fixup  - fusionner et supprimer le message
# drop   - supprimer le commit

Submodules

Gérer des dépendances Git dans votre projet :

# Ajouter un submodule
git submodule add <url> chemin/vers/sous-module

# Initialiser les submodules après clonage
git submodule init
git submodule update

# Mettre à jour tous les submodules
git submodule update --remote

Cherry-pick

Appliquer des commits spécifiques d'une branche à une autre :

# Cherry-pick d'un commit
git cherry-pick <commit-hash>

# Cherry-pick sans commit
git cherry-pick -n <commit-hash>

# Cherry-pick d'une plage de commits
git cherry-pick <commit-debut>^..<commit-fin>

Hooks Git

Automatiser des actions avec les hooks Git :

# Localisation des hooks
.git/hooks/

# Exemples de hooks courants
pre-commit      # Vérifications avant commit
post-commit     # Actions après commit
pre-push        # Vérifications avant push
post-merge      # Actions après merge