Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

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

CommandeEffet
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 mainNom de la branche créée par git init
git config --global core.editor "code --wait"Éditeur pour les messages
git config --global pull.rebase truegit pull rejoue tes commits au lieu de fusionner
git config --global merge.conflictStyle zdiff3Les conflits montrent aussi la version d'origine
git config --global --listAffiche les réglages globaux

Détails : installer et configurer Git.

Créer ou récupérer un dépôt

CommandeEffet
git initCrée un dépôt dans le dossier courant
git clone <adresse>Copie un dépôt distant, historique compris
git clone <adresse> dossierLe copie dans le dossier indiqué

Enregistrer

CommandeEffet
git statusÉtat des fichiers : modifiés, préparés, non suivis
git status -sVersion courte
git add fichierPrépare un fichier
git add -APrépare tout, suppressions comprises
git add -pPré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 --amendRemplace le dernier commit (non poussé)
git rm fichierSupprime le fichier et prépare la suppression
git rm --cached fichierArrête de suivre le fichier sans le supprimer du disque
git mv ancien nouveauRenomme ou déplace un fichier

Détails : les commandes de base.

Consulter l'historique et les différences

CommandeEffet
git log --onelineHistorique compact
git log --oneline --graph --allToutes les branches, avec le graphe
git log -p fichierToutes 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 diffModifications non préparées
git diff --stagedModifications préparées
git diff main..feature/xDifférences entre deux branches
git blame fichierAuteur et commit de chaque ligne
git shortlog -snNombre de commits par auteur

Travailler avec les branches

CommandeEffet
git branchListe les branches locales
git branch -aAvec les branches de suivi des distants
git switch -c nomCrée une branche et y va
git switch nomVa sur une branche
git switch -Revient à la branche précédente
git merge nomFusionne la branche nom dans la branche courante
git merge --no-ff nomFusionne avec un commit de fusion, même si l'avance rapide est possible
git merge --abortAbandonne une fusion en conflit
git rebase mainRejoue la branche courante au-dessus de main
git rebase -i HEAD~3Réécrit les 3 derniers commits (squash, reword, drop)
git cherry-pick <commit>Copie un commit sur la branche courante
git branch -d nomSupprime une branche fusionnée
git branch -m nouveauRenomme la branche courante

Détails : branches, conflits, rebase.

Dépôts distants

CommandeEffet
git remote -vListe les distants
git remote add origin <adresse>Ajoute un distant
git remote set-url origin <adresse>Change son adresse
git fetchTélécharge sans intégrer
git fetch --pruneOublie les branches supprimées sur le serveur
git pullTélécharge et intègre dans la branche courante
git push -u origin nomPublie une branche et mémorise le lien
git pushEnvoie les commits de la branche courante
git push --force-with-leaseForce prudemment, après un rebase de ta propre branche
git push origin --delete nomSupprime une branche distante

Détails : GitHub, push et pull.

Annuler une modification ou un commit

SituationCommande
Jeter les modifications d'un fichiergit restore fichier
Retirer un fichier de la zone de préparationgit restore --staged fichier
Récupérer un fichier d'un ancien commitgit 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 fichiersgit reset HEAD~1
Revenir à un commit en jetant toutgit reset --hard <commit>
Annuler un commit pousségit revert <commit>
Retrouver un commit perdugit reflog
Mettre de côté son travailgit stash push -m "message"
Le récupérergit stash pop
Supprimer les fichiers non suivisgit clean -n pour voir, puis git clean -f

Détails : annuler en Git.

Versions

CommandeEffet
git tag -a v1.0.0 -m "message"Crée un tag annoté
git tagListe les tags
git push origin v1.0.0Pousse un tag
git push origin --tagsPousse tous les tags
git describe --tagsSitue le commit courant par rapport au dernier tag
git switch --detach v1.0.0Se place sur une version pour la tester

Détails : tags et versions.

GitHub CLI

CommandeEffet
gh auth loginSe connecter à GitHub
gh repo createCréer un dépôt sur GitHub
gh pr createOuvrir une pull request
gh pr listLister les pull requests
gh pr checkout 23Récupérer la branche de la pull request 23
gh issue listLister les issues
gh release create v1.0.0Publier une release

Les messages d'erreur fréquents

MessageCauseSolution
Please tell me who you areNom et adresse non configurésgit config --global user.name et user.email
not a git repositoryLe terminal n'est pas dans un dépôtcd vers le bon dossier, ou git init
nothing to commit, working tree cleanRien de modifié, ou rien de préparéModifier, ou git add
Support for password authentication was removedMot de passe GitHub tapé en HTTPSgh auth login, jeton ou SSH
Permission denied (publickey)Clé SSH non reconnueAjouter la clé publique sur GitHub
! [rejected] … (fetch first)Le serveur a des commits que tu n'as pasgit 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 historiesDépôt distant créé avec un README, pull en mode fusiongit pull --rebase origin main
Need to specify how to reconcile divergent branchespull sans réglage, historiques divergentsgit 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 overwrittenModifications non commitées qui gênentgit stash ou un commit
The branch '…' is not fully mergedSuppression d'une branche non fusionnéeVérifier, puis git branch -D
You are in 'detached HEAD' stateHEAD pointe sur un commit, pas sur une branchegit switch -c nom pour garder tes commits, ou git switch main
GH006: Protected branch update failedPush direct sur une branche protégéePousser une branche et ouvrir une pull request

Chapitre terminé !

Tu as lu ce chapitre jusqu'au bout. Passe au suivant tant que c'est frais.

chapitres
–
de série
–
du cours
–
Cours suivant : Gestion de projetRevoir le sommaire du cours