Objectifs
- Initialiser un nouveau dépôt Git local avec
git init. - Cloner un dépôt distant existant avec
git clone. - Enregistrer des modifications en deux étapes :
git add(staging) etgit commit. - Synchroniser son travail avec un dépôt distant en utilisant
git pushetgit pull.
Le flux de travail de base
Le cycle de vie d’une modification avec Git se déroule en plusieurs étapes, qu’il est crucial de bien comprendre.
- Working Directory : C’est votre dossier de projet, là où vous modifiez vos fichiers.
- Staging Area (ou Index) : C’est une zone intermédiaire. Vous y placez les modifications que vous voulez inclure dans votre prochain “instantané” (commit). Cela vous permet de construire votre commit petit à petit.
- Local Repository : C’est votre base de données Git locale, stockée dans le dossier
.git. Un commit enregistre de manière permanente les fichiers du staging area dans l’historique. - Remote Repository : C’est la version de votre projet hébergée sur un serveur (GitHub, GitLab), qui permet de collaborer.
Commandes fondamentales
Démarrer un projet
git init: Transforme le dossier courant en un nouveau dépôt Git.git clone <url>: Crée une copie locale d’un dépôt distant existant.
Enregistrer des changements
git status: La commande la plus importante. Elle vous montre l’état de votre dépôt : quels fichiers sont modifiés, lesquels sont dans le staging area, etc. Utilisez-la tout le temps.git add <fichier>: Ajoute les modifications d’un fichier au staging area. Vous pouvez utilisergit add .pour ajouter tous les fichiers modifiés, mais faites-le avec prudence.git commit -m "Votre message descriptif": Crée un commit avec les fichiers actuellement dans le staging area.
Collaborer avec un dépôt distant
git push: Envoie vos commits locaux vers le dépôt distant.git pull: Récupère les changements du dépôt distant et les fusionne dans votre branche locale. C’est un raccourci pourgit fetchsuivi degit merge.
Exemple de workflow complet
# Créer un nouveau projet
mkdir mon_projet_git
cd mon_projet_git
# Initialiser le dépôt
git init
# Créer un fichier et faire le premier commit
echo "Hello Git" > README.md
git status
git add README.md
git status
git commit -m "feat: premier commit avec le README"
git status
# Modifier le fichier et faire un deuxième commit
echo "Une deuxième ligne." >> README.md
git status
git add README.md
git commit -m "docs: ajouter une ligne au README"
# Voir l'historique des commits
git log --oneline
Bonnes pratiques
- Faites des commits atomiques : Chaque commit doit représenter une seule modification logique et fonctionnelle. Ne mélangez pas une correction de bug avec l’ajout d’une nouvelle fonctionnalité dans le même commit.
- Écrivez des messages de commit clairs : Le message doit expliquer pourquoi le changement a été fait, pas ce qui a été fait (le code le montre déjà). Un bon format est un titre court à l’impératif (“fix: corriger le bug d’affichage”), suivi d’un corps plus détaillé si nécessaire.
- Utilisez
git statusetgit diffavant de commiter pour bien vérifier ce que vous vous apprêtez à enregistrer.
Pièges courants
- Faire
git add .aveuglément : Vous risquez d’ajouter des fichiers temporaires ou des secrets que vous ne vouliez pas versionner. - Oublier de
push: Vos commits sont locaux tant que vous ne les avez pas “poussés”. Vos collaborateurs ne les verront pas. - Faire des “méga-commits” : Un commit avec 2000 lignes de changements sur 50 fichiers est très difficile à relire et à comprendre. Privilégiez les petits commits ciblés.
Exercices
-
Votre premier dépôt :
- Créez un dossier, initialisez un dépôt Git.
- Créez un fichier
info.txtavec votre nom dedans. - Ajoutez ce fichier et faites un commit avec le message “Initial commit”.
-
Cycle de modification :
- Modifiez le fichier
info.txten ajoutant la date du jour. - Utilisez
git statuspour voir que le fichier est modifié. - Utilisez
git diffpour voir exactement ce qui a changé. - Faites un nouveau commit.
- Modifiez le fichier
-
Cloner un projet existant :
- Allez sur GitHub et trouvez un petit projet open source qui vous intéresse.
- Utilisez
git clonepour en obtenir une copie sur votre machine. - Utilisez
git logpour explorer son historique.