Ce chapitre présente les notions dans un ordre progressif. Les commandes illustrent le fonctionnement ; les manipulations guidées sont regroupées dans les TP.
3.1 Local, distant et origin
git clone crée une copie locale d’un dépôt existant et configure généralement un distant nommé origin. Ce nom est une convention. origin/main est une référence locale de suivi du distant, actualisée lors d’un fetch ; ce n’est pas une interrogation permanente de GitHub.
git clone https://github.com/VOTRE_COMPTE/VOTRE_DEPOT.git
git remote -v
git branch -vv3.2 Authentifier un accès : HTTPS ou SSH
| Transport | Authentification | À retenir |
|---|---|---|
| HTTPS | Jeton (PAT) ou gestionnaire d’identifiants configuré. | Le mot de passe du compte GitHub ne sert pas de mot de passe Git HTTPS. |
| SSH | Paire de clés et clé publique enregistrée sur GitHub. | La clé privée prouve votre identité ; elle ne déchiffre pas le dépôt. |
Un accès en écriture exige une autorisation même pour un dépôt public. Un jeton possède un périmètre et éventuellement une expiration. La clé privée reste sur le poste ; une passphrase protège son utilisation. Révoquer un jeton ou une clé invalide cet accès.
ssh-keygen -t ed25519 -C "vous@example.com"
cat ~/.ssh/id_ed25519.pub
ssh -T git@github.com.pub désigne la clé à enregistrer sur GitHub. Vérifier l’empreinte du serveur lors de la première connexion.3.3 Publier : add, commit puis push
add prépare, commit enregistre localement, push envoie les commits et actualise la branche distante si l’opération est autorisée. Une branche « ahead by 1 commit » possède un commit local non publié par rapport à sa référence de suivi.
git add doc.txt
git commit -m "Documente le projet"
git push -u origin feature/doc-u configure la branche distante de suivi. Les prochains git push et git pull peuvent s’appuyer sur cette association. Une erreur de push peut signaler des droits insuffisants ou un historique distant qui a avancé.
3.4 Synchroniser : fetch et pull
| Commande | Télécharge les changements | Modifie la branche courante |
|---|---|---|
git fetch origin | Oui : objets et références. | Non : permet d’inspecter avant intégration. |
git pull | Oui, via fetch. | Oui, via merge ou rebase selon configuration/options. |
git pull --ff-only | Oui. | Seulement si un fast-forward est possible ; refuse une divergence. |
git fetch origin
git log --oneline HEAD..origin/main
git diff HEAD origin/mainLe fetch ne se limite donc pas aux métadonnées. Avant l’intégration, comprendre les changements locaux et distants permet de choisir entre fusion et rebase selon le processus d’équipe.
3.5 Pull request, fork et issue
Une pull request est une proposition d’intégration entre une branche source et une branche cible. Elle rassemble diff, discussion, checks et revue. Elle n’annule pas la possibilité de conflits ; l’équipe doit les résoudre et vérifier le résultat.
Un fork est un dépôt distinct rattaché à un projet d’origine sur GitHub ; un clone est une copie locale. On peut proposer une PR depuis un fork sans disposer de droits d’écriture sur le dépôt d’origine. Une issue décrit un travail ou un problème et peut être liée à une PR qui le résout.
3.6 Synchroniser et nettoyer un dépôt distant
git remote -v
git fetch --prune
git branch -vv
git switch main
git pull --ff-only
git switch -c feature/ma-fonctionnalite
git push -u origin feature/ma-fonctionnalite
# après fusion de la PR
git switch main
git pull --ff-only
git branch -d feature/ma-fonctionnalite
git push origin --delete feature/ma-fonctionnalite
fetch met à jour la connaissance du dépôt distant sans modifier votre branche courante. pull récupère puis intègre. Avec --ff-only, Git refuse de créer implicitement un merge commit si les historiques ont divergé.