cheatsheet • gestion de versions
par alsacreations.fr
Cheatsheet Git
Démarrer un dépôt
git initInitialise un dépôt Git dans le dossier courant, qu'il soit vide ou déjà rempli de fichiers.
git clone ssh://user@serveur/cheminRécupère une copie complète d'un dépôt distant, avec tout son historique et ses branches.
git clone --depth 1 urlClone superficiel : ne récupère que le dernier commit. Beaucoup plus rapide sur un dépôt volumineux ou en intégration continue.
git remote -vAffiche les dépôts distants connus et leurs URL de lecture et d'écriture.
git remote add nom urlDéclare un nouveau dépôt distant. Par convention, le principal se nomme origin.
git remote set-url origin urlChange l'adresse d'un dépôt distant existant, par exemple pour passer de HTTPS à SSH.
État & différences
git statusAffiche l'état du dossier de travail : fichiers modifiés, indexés ou non suivis. Ajouter -s pour un affichage condensé.
git diffAffiche les modifications du dossier de travail qui ne sont pas encore indexées.
git diff --stagedAffiche à l'inverse ce qui est déjà indexé, c'est-à-dire exactement ce que contiendra le prochain commit.
git diff commitA commitB --name-onlyListe uniquement les noms des fichiers modifiés entre deux commits. --shortstat donne plutôt un résumé chiffré.
git diff -wIgnore les différences d'espaces (whitespaces). Très utile après un reformatage automatique.
git blame fichier -L 85,90Indique qui a modifié quoi, ligne par ligne. L'option -L restreint l'analyse à une plage de lignes.
Indexer & valider
git add .Ajoute à l'index tous les fichiers modifiés du dossier courant et de ses sous-dossiers, en vue du prochain commit.
git add fichierAjoute les fichiers un à un, pour composer des commits plus précis et plus lisibles.
git add -pIndexation interactive : Git propose chaque bloc de modification et vous choisissez de l'inclure ou non.
git commit -m "message"Valide les fichiers indexés. Sans -m, Git ouvre un éditeur de texte pour saisir la description.
git commit --amendModifie le dernier commit (message ou contenu). S'il a déjà été envoyé, il faudra ensuite un push --force-with-lease.
git rm --cached .envCesse de suivre un fichier déjà versionné sans le supprimer du disque. Le réflexe après l'avoir ajouté à
.gitignore.
Branches
git branchListe les branches disponibles localement et signale la branche active. Ajouter -a pour voir aussi les branches distantes.
git switch brancheBascule sur une branche existante. Commande moderne, plus lisible que git checkout qui cumule plusieurs rôles.
git fetchgit checkout -b branche origin/brancheRécupère puis crée localement une branche qui n'existait jusque-là que sur le dépôt distant.
git merge brancheFusionne la branche indiquée dans la branche active, en créant un commit de fusion si les historiques ont divergé.
git rebase brancheRejoue les commits de la branche active par-dessus une autre, pour un historique linéaire. À éviter sur une branche déjà partagée.
git branch -d brancheSupprime une branche locale déjà fusionnée. La majuscule -D force la suppression même si du travail serait perdu.
Synchroniser
git pushEnvoie les derniers commits locaux vers le dépôt distant, dans la branche active.
git push -u origin brancheEnvoie une nouvelle branche locale et l'associe à sa contrepartie distante. Version longue : --set-upstream.
git push --force-with-leaseÉcrase l'historique distant, mais refuse de le faire si quelqu'un a publié entre-temps. Toujours préférable à --force.
git pullRécupère les commits distants et les intègre à la branche locale, selon la stratégie configurée (fusion ou rebase).
git pull --rebase --autostashMet de côté les modifications en cours, rebase sur la version distante, puis les réapplique. Historique propre garanti.
git fetch origin brancheTélécharge les nouveautés du dépôt distant sans rien modifier dans votre dossier de travail.
Historique
git log --onelineAffiche le journal des commits condensé sur une ligne chacun : identifiant court et message.
git log --graph --decorate --onelineAjoute la représentation graphique des branches et des fusions, ainsi que les noms de branches et d'étiquettes.
git log --author="nom" --shortstatFiltre le journal par auteur et résume les lignes ajoutées et supprimées à chaque commit.
git log fichierRetrace l'histoire d'un seul fichier. --stat affiche en plus les statistiques de chaque commit.
git show commitAffiche le détail complet d'un commit : métadonnées, message et différences introduites.
git reflogJournal de toutes les actions effectuées localement, y compris celles effacées de l'historique. La bouée de sauvetage après une erreur.
Mettre de côté
git stashEmpile les modifications non validées pour retrouver un dossier de travail propre. Ajouter -m "message" pour les décrire.
git stash -uInclut aussi les fichiers non suivis, que git stash laisse en place par défaut.
git stash listAffiche la pile des mises de côté, du plus récent (stash@{0}) au plus ancien.
git stash applyRéapplique le stash le plus récent tout en le conservant dans la pile.
git stash popRéapplique le stash le plus récent et le retire de la pile dans la foulée.
git stash clearVide entièrement la pile. Irréversible : vérifier d'abord avec git stash list.
Annuler & réparer
git revert HEADAnnule un commit en en créant un nouveau qui inverse ses changements : l'historique est préservé, rien n'est réécrit.
git revert --no-edit HEAD~1Annule l'avant-dernier commit sans ouvrir l'éditeur pour saisir un message.
git reset --soft HEAD~1Défait le dernier commit mais conserve toutes les modifications indexées. Idéal quand on a raté son commit.
git reset --hard origin/brancheRéaligne la branche locale sur la distante en écrasant tout. Les modifications non versionnées sont perdues.
git restore fichierAnnule les modifications d'un fichier non indexé. --staged le retire au contraire de l'index sans toucher au contenu.
git clean -npuisgit clean -fAnnonce puis supprime réellement les fichiers non versionnés. Options utiles : -d pour les dossiers, -x pour les fichiers ignorés.
Configuration
git config --listListe la configuration effective, résultat de trois fichiers par priorité décroissante :
.git/config(dépôt), ~/.gitconfig (utilisateur), /etc/gitconfig (système).git config --global user.name nomDéfinit l'identité utilisée dans les commits. À compléter par user.email, sans quoi Git refusera de committer.
git config --global --editOuvre toute la configuration utilisateur dans l'éditeur, pour y ajouter alias et préférences d'un seul tenant.
Fichier .gitignore
Placé à la racine ou dans un sous-dossier, il exclut du versionnement les journaux, fichiers de configuration et dossiers d'envois.
git check-ignore -v fichierExplique quelle règle, dans quel fichier et à quelle ligne, provoque l'exclusion d'un fichier donné.