Aller au contenu

Cheat sheet

Démarrer

Démarrer un nouveau repo

git init

Cloner un repo existant

git clone <url>

Préparer le commit

Ajouter un fichier non suivi ou des modifications

git add <file>

Ajouter tous les fichiers non suivis et les modifications

git add .

Déplacer le fichier

git mv <old> <new>

Supprimer le fichier

git rm <file>

Dire à Git d'oublier un fichier sans le supprimer

git rm --cached <file>

Unstage un fichier

git reset <file>

Unstager tout

git reset

Commiter

Créez un commit (et ouvrez l'éditeur de texte pour écrire un message)

git commit

Créér un commit avec le message

git commit -m 'message'

Commettre tous les changements unstages

git commit -am 'message'

Déplacements entre branches

Commutation entre branches

git switch <name>
ou
git checkout <name>

Créer une branche

git switch -c <name>
ou
git checkout -b <name>

Lister les branches

git branch

Supprimer une branche

git branch -d <name>

Forcer la suppression d'une branche

git branch -D <name>

Diff changements stagés et non stagés

Diff sur tous les changements stagés et non stagés

git diff HEAD

Diff sur les changements qui viennent d'être stagés

git diff --staged

Diff des changements non stagés

git diff

Diff commits

Afficher diff entre un commit et son parent

git show <commit>

Diff entre deux commits

git diff <commit> <commit>

Diff

git diff <commit> <file>

Afficher un résumé d'un diff

git diff <commit> --stat
ou
git show <commit> --stat

Moyens de se référer à un commit

Quand on parle de commit, on se réfère:

clé valeur
une branche main
un tag v0.1
un id de commit 3e887ab
une branche distante origin/main
commit actuel HEAD
il y a 3 commits HEAD^^^ ou HEAD~3

Jeter ses changements

Supprimer les modifications unstagées dans un fichier

git restore <file>
ou
git checkout <file>

Supprimer toutes les modifications stagées et unstagées dans un fichier

git restore --staged --worktree <file>
ou
git checkout HEAD <file>

Supprimer toutes les modifications stagées et unstagées

git reset --hard

Supprimer des fichiers non stagés

git clean

'Stash' tous les changements stagés et non stagés

git stash

Modifier l'historique

"Défaire" le commit le plus récent (gardez votre répertoire de travail de la même façon)

git reset HEAD^

Squash les 5 derniers commits en un

git rebase -i HEAD~6

Annuler une rebase ratée

git reflog BRANCHNAME
Puis trouver manuellement le bon identifiant de commit dans le reflog, puis exécuter:
git reset --hard <commit>

Modifier un message de commit (ou ajouter un fichier que vous avez oublié)

git commit --amend

Historique du code

Regardez l'historique d'une branche

git log main
git log --graph main
git log --oneline

Afficher chaque commit qui a modifié un fichier

git log <file>

Afficher chaque commit qui a modifié un fichier, y compris avant qu'il ne soit renommé

git log --follow <file>

Trouver chaque commit qui a ajouté ou supprimé un texte

git log -G banana

Afficher qui a changé pour la dernière fois chaque ligne d'un fichier

git blame <file>

Combiner des branches divergentes

Combiner avec rebase

git switch banana
git rebase main

rebase

Combiner avec un merge

git switch main
git merge banana

merge

Combiner avec un squash merge

git switch main
git merge --squash banana
git commit

merge squash

Mettre une branche à jour avec une autre branche (fusion rapide)

git switch main
git merge bnana

merge rapide

Copier un commit sur la branche actuelle

git cherry_pick <commit>

commit branche actuelle

Restaurer un ancien fichier

git checkout <commit> <file>
ou
git restore <file> --source <commit>

Ajouter un repo distant

git remote add <name> <url>

Pousser ses changements

Pousser sur la branch main

git push origin main

Pousser la branche actuelle à sa "branche de suivi" distante

git push

Pousser une branche qui n'a jamais encore été poussée

git push -u origin <name>

Forcer le push

git push --frce-with-lease

Pousser des tags

git push --tags

Tirer ses changements

Récupérer les changements (mais ne change aucune branches locales)

git fetch origin main

Récupérer les changements, puis rebaser sa branche actuelle

git pull --rebase

Récupérer les changements, puis les fusionner sur la branche actuelle

git pull origin main
ou
git pull

Configurer Git

Définir une option de configuration

git congih user.name 'toto'

Définir l'option globalement

git config --global ...

Ajouter un alias

git config alias.st status

Voir les options de configuration possuibles

man git-config

Fichiers importants

Config git local

.git/config

Config git globale

~/.gitconfig

Liste des fichiers à ignorer

.gitignore

Git pro

Giter comme un pro