Aller au contenu
Sommaire

Fiche mémo Git

Fiche mémo · environ 5 min de lecture

Validé

Validé. Ce site n’exécute aucune commande. Sources

Les trois zones

ZoneContenuY entrerEn ressortir
répertoire de travailfichiers en cours d'éditionéditergit restore <fichier> (perd les modifications)
indexprochain instantanégit add <fichier>git restore --staged <fichier>
dépôt (HEAD)commitsgit commitgit revert <commit> (nouveau commit)

Objets : blob (contenu), arbre (noms et structure), commit (instantané + parents), référence (nom vers un commit). Une branche est un pointeur déplaçable vers un commit ; HEAD désigne la branche courante.

Lire sans rien modifier

BesoinCommande
état des fichiersgit status (-s : version courte)
modifié, non indexégit diff
indexé, non commitégit diff --staged
historique en graphegit log --oneline --decorate --graph --all
déplacements passésgit reflog
distantsgit remote -v
motif qui ignore un fichiergit check-ignore -v <fichier>

Branches et intégration

BesoinCommandeRemarque
créer et aller sur une branchegit switch -c <nom>switch : Git 2.23 ou plus
revenir à la précédentegit switch -
fusionnergit merge <branche>avance rapide si possible
forcer un commit de fusiongit merge --no-ff <branche>garde la trace
refuser toute fusion non trivialegit merge --ff-only <branche>sortie non nulle sinon
rejouer ses commitsgit rebase <base>jamais sur des commits déjà partagés
supprimer une branche fusionnéegit branch -d <nom>-D force : relire le nom

Conflit

ÉtapeCommande
voir les fichiers en conflitgit status (« Unmerged paths »)
marqueurs<<<<<<< votre côté, =======, >>>>>>> l'autre côté
déclarer résoluéditer, retirer les marqueurs, git add <fichier>
concluregit commit ou git merge --continue
abandonnergit merge --abort ou git rebase --abort

Annuler

SituationSolution sûreDanger
fichier indexé par erreurgit restore --staged <fichier>aucun
dernier commit local à corrigergit commit --amendseulement si non poussé
commit publié à défairegit revert <commit> (-m 1 pour une fusion)aucun, ajoute un commit
sommet perdu après reset ou rebasegit reflog puis git switch -c <nom> <entrée>seulement pour des commits déjà faits
modifications à mettre de côtégit stash push (-u : non suivis), git stash popstash drop et clear : peu récupérables

Reflog : local au dépôt ; entrées conservées 90 jours (atteignables) et 30 jours (inatteignables) par défaut d'après la page consultée.

Distants (HTTPS)

BesoinCommande
ajoutergit remote add origin https://example.com/demo/projet-demo.git
télécharger sans fusionnergit fetch origin
fetch puis fusiongit pull
simuler l'envoigit push --dry-run origin main
envoyer et suivregit push -u origin main
retirer le distantgit remote remove origin

Authentification HTTPS GitHub : jeton d'accès personnel, pas de mot de passe de compte. Assistants : cache (mémoire), osxkeychain (Trousseau), store (clair sur le disque, à éviter). Jamais de jeton dans l'URL.

.gitignore

MotifSens
# …commentaire
*.logtout fichier .log (hors /)
build/dossier seulement
/TODOancré à la racine du .gitignore
**/foofoo à tout niveau
!garder.logré-inclut

N'agit pas sur un fichier déjà suivi : git rm --cached <fichier> puis commit. Autres sources de motifs : .git/info/exclude, core.excludesFile.

Commits

  • Ligne de titre de 50 caractères au plus, ligne vide, corps qui dit le pourquoi.
  • Un commit = un changement cohérent ; relire git diff --staged avant de valider.
  • Pas de git add . aveugle ; pas de secret, de produit de génération ni de gros binaire.

Secret commité : ordre d'action

  1. Révoquer ou renouveler le secret tout de suite (le dépôt privé ne protège pas).
  2. Le considérer comme compromis ; prévenir cyberagent.
  3. Non poussé et dernier commit : git reset --soft HEAD~, retirer le secret, recommiter.
  4. Poussé : réécriture avec git filter-repo (recommandé par la doc Git, qui déconseille filter-branch) ; sauvegarde avant ; clones, forks et vues en cache peuvent garder la donnée.
  5. Consigner dans securite/registre.md.

Attention : opérations destructives

Attention : ces commandes détruisent du travail ou de l'historique distant, sans retour pour ce qui n'a jamais été commité.

CommandePertePrévisualiser
git reset --hardmodifications non commitées (index et répertoire)git status, git diff, git stash
git restore <fichier>modifications non commitées du fichiergit diff <fichier>
git push --forcecommits distants inconnus de vousgit push --dry-run ; préférer --force-with-lease
git clean -ffichiers non suivis, hors Corbeillegit clean -n puis -i

-d : dossiers non suivis ; -x : fichiers ignorés aussi ; -X : seulement les ignorés ; deux -f pour un dépôt imbriqué.

Sources

Consultées le 17 octobre 2026 (Git 2.56.0 affichée par la documentation, Pro Git 2e édition).

Points non vérifiés : voir la section correspondante du cours Git (version de Git de Stéphane, branche par défaut, options usuelles non relues page par page).