Concepts fondamentaux
\( \text{Version} = \text{État du code} + \text{Métadonnées} + \text{Historique} \)
Définition d'une version
Exemple Git :
git init - Crée un dépôtgit add . - Prépare les fichiersgit commit -m "Message" - Sauvegardegit log - Affiche l'historique
Outils de versionnement
Git - Système distribué :
- Chaque développeur a une copie complète
- Historique complet local
- Travail hors-ligne possible
- Branches et fusions avancées
Concurrents :
- SVN - Centralisé, plus simple
- Mercurial - Alternative à Git
- Subversion - Ancien système
Avantages de Git
Historique complet
Collaboration efficace
Sécurité des données
Performance élevée
Commandes essentielles
| Commande | Fonction |
|---|---|
| git init | Initialise un dépôt |
| git clone [url] | Copie un dépôt distant |
| git add [fichier] | Prépare des fichiers |
| git commit -m "[message]" | Sauvegarde les modifications |
| git status | Vérifie l'état |
| git log | Affiche l'historique |
| git push | Envoie les modifications |
| git pull | Récupère les modifications |
Bonnes pratiques
Messages clairs
Structure organisée
Synchronisation fréquente
Protection des branches
Flux de travail Git
Exemple de workflow
# 1. Initialiser le dépôt
git init
# 2. Configurer l'utilisateur
git config user.name "Alice Martin"
git config user.email "alice@example.com"
# 3. Créer des fichiers
echo "# Projet NSI" > README.md
echo "print('Hello World')" > main.py
# 4. Premier commit
git add .
git commit -m "Initialisation du projet"
Gestion des branches
# Créer une branche
git branch develop
# Passer à la branche
git checkout develop
# Créer et basculer en une commande
git checkout -b feature/nouvelle-fonction
# Fusionner la branche
git checkout main
git merge feature/nouvelle-fonction
# Supprimer la branche
git branch -d feature/nouvelle-fonction
Résolution de conflits
# Conflit dans fichier.py
<<<<<<< HEAD
def nouvelle_fonction():
return "Nouvelle implémentation"
=======
def nouvelle_fonction():
return "Ancienne implémentation"
>>>>>>> autre_branche
# Solution : choisir la bonne implémentation
def nouvelle_fonction():
return "Meilleure implémentation"
# Puis :
git add fichier.py
git commit -m "Résolution du conflit"
Conseils pour maîtriser Git
Commits fréquents
Messages descriptifs
Vérifier avant de pousser
Protéger les branches critiques
Apprendre les raccourcis