Retour au cours

workflow git : init, clone, commit, push et pull

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) et git commit.
  • Synchroniser son travail avec un dépôt distant en utilisant git push et git 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.

git add

git commit

git push

git pull

1. Répertoire de travail (Working Directory)
2. Zone de transit (Staging Area)
3. Dépôt local (Local Repository)
4. Dépôt distant (Remote Repository)
  1. Working Directory : C’est votre dossier de projet, là où vous modifiez vos fichiers.
  2. 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.
  3. 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.
  4. 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 utiliser git 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 pour git fetch suivi de git 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 status et git diff avant 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

  1. Votre premier dépôt :

    • Créez un dossier, initialisez un dépôt Git.
    • Créez un fichier info.txt avec votre nom dedans.
    • Ajoutez ce fichier et faites un commit avec le message “Initial commit”.
  2. Cycle de modification :

    • Modifiez le fichier info.txt en ajoutant la date du jour.
    • Utilisez git status pour voir que le fichier est modifié.
    • Utilisez git diff pour voir exactement ce qui a changé.
    • Faites un nouveau commit.
  3. Cloner un projet existant :

    • Allez sur GitHub et trouvez un petit projet open source qui vous intéresse.
    • Utilisez git clone pour en obtenir une copie sur votre machine.
    • Utilisez git log pour explorer son historique.