Chapitre 158 minDébutant
Aide-mémoire : les commandes Git essentielles
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- retrouver la commande Git de chaque situation ;
- comprendre les messages d'erreur fréquents et leur solution.
Cet aide-mémoire rassemble les commandes Git essentielles, classées par usage : configurer, créer un dépôt, enregistrer, consulter l'historique, travailler avec les branches, échanger avec GitHub, annuler, étiqueter les versions. Chaque commande renvoie au chapitre qui l'explique. Garde-le ouvert pendant tes TP ; pour comprendre une commande en détail, git help <commande> ouvre sa documentation officielle.
Configurer
| Commande | Effet |
|---|---|
git config --global user.name "Prénom Nom" | Nom utilisé dans tes commits |
git config --global user.email "adresse@example.com" | Adresse utilisée dans tes commits |
git config --global init.defaultBranch main | Nom de la branche créée par git init |
git config --global core.editor "code --wait" | Éditeur pour les messages |
git config --global pull.rebase true | git pull rejoue tes commits au lieu de fusionner |
git config --global merge.conflictStyle zdiff3 | Les conflits montrent aussi la version d'origine |
git config --global --list | Affiche les réglages globaux |
Détails : installer et configurer Git.
Créer ou récupérer un dépôt
| Commande | Effet |
|---|---|
git init | Crée un dépôt dans le dossier courant |
git clone <adresse> | Copie un dépôt distant, historique compris |
git clone <adresse> dossier | Le copie dans le dossier indiqué |
Enregistrer
| Commande | Effet |
|---|---|
git status | État des fichiers : modifiés, préparés, non suivis |
git status -s | Version courte |
git add fichier | Prépare un fichier |
git add -A | Prépare tout, suppressions comprises |
git add -p | Prépare bloc par bloc, après confirmation |
git commit -m "message" | Enregistre ce qui est préparé |
git commit -am "message" | Prépare les fichiers déjà suivis et enregistre |
git commit --amend | Remplace le dernier commit (non poussé) |
git rm fichier | Supprime le fichier et prépare la suppression |
git rm --cached fichier | Arrête de suivre le fichier sans le supprimer du disque |
git mv ancien nouveau | Renomme ou déplace un fichier |
Détails : les commandes de base.
Consulter l'historique et les différences
| Commande | Effet |
|---|---|
git log --oneline | Historique compact |
git log --oneline --graph --all | Toutes les branches, avec le graphe |
git log -p fichier | Toutes les modifications d'un fichier |
git log -S "texte" | Commits qui ont ajouté ou retiré ce texte |
git show <commit> | Détail d'un commit |
git diff | Modifications non préparées |
git diff --staged | Modifications préparées |
git diff main..feature/x | Différences entre deux branches |
git blame fichier | Auteur et commit de chaque ligne |
git shortlog -sn | Nombre de commits par auteur |
Travailler avec les branches
| Commande | Effet |
|---|---|
git branch | Liste les branches locales |
git branch -a | Avec les branches de suivi des distants |
git switch -c nom | Crée une branche et y va |
git switch nom | Va sur une branche |
git switch - | Revient à la branche précédente |
git merge nom | Fusionne la branche nom dans la branche courante |
git merge --no-ff nom | Fusionne avec un commit de fusion, même si l'avance rapide est possible |
git merge --abort | Abandonne une fusion en conflit |
git rebase main | Rejoue la branche courante au-dessus de main |
git rebase -i HEAD~3 | Réécrit les 3 derniers commits (squash, reword, drop) |
git cherry-pick <commit> | Copie un commit sur la branche courante |
git branch -d nom | Supprime une branche fusionnée |
git branch -m nouveau | Renomme la branche courante |
Détails : branches, conflits, rebase.
Dépôts distants
| Commande | Effet |
|---|---|
git remote -v | Liste les distants |
git remote add origin <adresse> | Ajoute un distant |
git remote set-url origin <adresse> | Change son adresse |
git fetch | Télécharge sans intégrer |
git fetch --prune | Oublie les branches supprimées sur le serveur |
git pull | Télécharge et intègre dans la branche courante |
git push -u origin nom | Publie une branche et mémorise le lien |
git push | Envoie les commits de la branche courante |
git push --force-with-lease | Force prudemment, après un rebase de ta propre branche |
git push origin --delete nom | Supprime une branche distante |
Détails : GitHub, push et pull.
Annuler une modification ou un commit
| Situation | Commande |
|---|---|
| Jeter les modifications d'un fichier | git restore fichier |
| Retirer un fichier de la zone de préparation | git restore --staged fichier |
| Récupérer un fichier d'un ancien commit | git restore --source=<commit> fichier |
| Défaire le dernier commit en gardant tout préparé | git reset --soft HEAD~1 |
| Défaire le dernier commit en gardant les fichiers | git reset HEAD~1 |
| Revenir à un commit en jetant tout | git reset --hard <commit> |
| Annuler un commit poussé | git revert <commit> |
| Retrouver un commit perdu | git reflog |
| Mettre de côté son travail | git stash push -m "message" |
| Le récupérer | git stash pop |
| Supprimer les fichiers non suivis | git clean -n pour voir, puis git clean -f |
Détails : annuler en Git.
Versions
| Commande | Effet |
|---|---|
git tag -a v1.0.0 -m "message" | Crée un tag annoté |
git tag | Liste les tags |
git push origin v1.0.0 | Pousse un tag |
git push origin --tags | Pousse tous les tags |
git describe --tags | Situe le commit courant par rapport au dernier tag |
git switch --detach v1.0.0 | Se place sur une version pour la tester |
Détails : tags et versions.
GitHub CLI
| Commande | Effet |
|---|---|
gh auth login | Se connecter à GitHub |
gh repo create | Créer un dépôt sur GitHub |
gh pr create | Ouvrir une pull request |
gh pr list | Lister les pull requests |
gh pr checkout 23 | Récupérer la branche de la pull request 23 |
gh issue list | Lister les issues |
gh release create v1.0.0 | Publier une release |
Les messages d'erreur fréquents
| Message | Cause | Solution |
|---|---|---|
Please tell me who you are | Nom et adresse non configurés | git config --global user.name et user.email |
not a git repository | Le terminal n'est pas dans un dépôt | cd vers le bon dossier, ou git init |
nothing to commit, working tree clean | Rien de modifié, ou rien de préparé | Modifier, ou git add |
Support for password authentication was removed | Mot de passe GitHub tapé en HTTPS | gh auth login, jeton ou SSH |
Permission denied (publickey) | Clé SSH non reconnue | Ajouter la clé publique sur GitHub |
! [rejected] … (fetch first) | Le serveur a des commits que tu n'as pas | git pull puis git push |
! [rejected] … (non-fast-forward) | Historiques divergents (souvent après un rebase ou un reset) | git pull, ou --force-with-lease sur ta propre branche |
refusing to merge unrelated histories | Dépôt distant créé avec un README, pull en mode fusion | git pull --rebase origin main |
Need to specify how to reconcile divergent branches | pull sans réglage, historiques divergents | git config --global pull.rebase true |
CONFLICT (content): Merge conflict in … | Mêmes lignes modifiées des deux côtés | Éditer, git add, terminer (chapitre 6) |
Your local changes … would be overwritten | Modifications non commitées qui gênent | git stash ou un commit |
The branch '…' is not fully merged | Suppression d'une branche non fusionnée | Vérifier, puis git branch -D |
You are in 'detached HEAD' state | HEAD pointe sur un commit, pas sur une branche | git switch -c nom pour garder tes commits, ou git switch main |
GH006: Protected branch update failed | Push direct sur une branche protégée | Pousser une branche et ouvrir une pull request |