Notes Git

Commandes Git pour examiner les modifications, travailler avec les branches et récupérer son travail.

Examiner le dépôt

État et différences

status affiche la branche et les modifications. diff compare le répertoire de travail à l’index. Avec --staged, vous voyez ce que contiendra le prochain commit.

git status -sb
git diff
git diff --staged
git diff HEAD -- README.md
git diff --check

Historique et modifications par fichier

Utilisez show pour examiner un commit. log --follow suit l’historique d’un fichier au-delà des changements de nom.

git log --oneline --graph --decorate --all
git log -p -2
git show --stat HEAD
git show --name-only HEAD
git log --follow -- README.md
git blame -- README.md

Préparer et enregistrer les modifications

Indexer par fichier ou par bloc

add -p permet de choisir les blocs de modifications. restore --staged retire un fichier du prochain commit et conserve vos modifications locales.

git add -- README.md
git add -p
git diff --staged
git commit -m "Update documentation"
git restore --staged -- README.md

Corriger le dernier commit local

Utilisez amend sur un commit encore local. La commande inclut les modifications indexées et crée un nouvel identifiant de commit.

git commit --amend
git commit --amend --no-edit

Fichiers ignorés et suivis

check-ignore indique la règle qui ignore un chemin. rm --cached conserve le fichier sur le disque et prépare son retrait du dépôt. Ajoutez la règle correspondante à .gitignore pour éviter de le réintégrer.

git check-ignore -v -- dist/index.html
git rm --cached -- local-settings.json

Branches et intégration

Créer et changer de branche

switch -c crée une branche à partir du commit courant. switch - revient à la branche précédente. branch -d protège les branches dont les modifications restent à fusionner.

git branch -vv
git switch -c feature/docs
git switch main
git switch -
git branch --merged main
git branch -d feature/docs

Intégrer les modifications et résoudre les conflits

Depuis votre branche de travail, vous pouvez fusionner origin/main. En cas de conflit, modifiez les fichiers, indexez-les et poursuivez la fusion. Utilisez --abort pour l’annuler.

git fetch origin
git merge origin/main
git status
git add -- README.md
git merge --continue
git merge --abort

Appliquer un commit précis

cherry-pick applique les modifications d’un commit à la branche courante. Remplacez abc1234 par son identifiant.

git show abc1234
git cherry-pick abc1234

Dépôts distants

Cloner et synchroniser

Remplacez l’URL d’exemple par celle de votre dépôt. fetch --prune actualise les références distantes et retire celles qui sont obsolètes. pull --ff-only intègre les changements uniquement si la branche peut avancer sans commit de fusion.

git clone https://example.com/team/project.git
git remote -v
git fetch --prune origin
git pull --ff-only

Publier une branche

-u associe la branche locale à la branche distante. Vous pouvez ensuite utiliser git push depuis cette branche.

git push -u origin feature/docs

Mettre de côté et récupérer

Mettre le travail en cours de côté

push -u inclut aussi les fichiers non suivis. apply réapplique les modifications et conserve l’entrée. Supprimez-la avec drop après vérification.

git stash push -u -m "Work in progress"
git stash list
git stash show -p 'stash@{0}'
git stash apply 'stash@{0}'
git stash drop 'stash@{0}'

Annuler un commit partagé

revert crée un commit qui inverse une modification antérieure. Examinez d’abord le commit à annuler.

git show abc1234
git revert abc1234

Récupérer un commit local

reflog enregistre les déplacements récents des références locales. Une fois le commit trouvé, créez une branche à partir de son identifiant pour le conserver.

git reflog --date=relative
git branch rescue abc1234

Chercher et diagnostiquer

Chercher dans les fichiers et les commits

git grep cherche dans les fichiers suivis. log -S repère les commits qui modifient le nombre d’occurrences d’une chaîne.

git grep -n 'example'
git log -S 'example' --oneline
git log origin/main..HEAD --oneline

Trouver le commit à l’origine d’un défaut

Marquez HEAD comme défectueux et abc1234 comme un commit dont le bon fonctionnement est établi. Testez chaque révision et marquez-la avec git bisect good ou git bisect bad selon le résultat. Revenez à la branche initiale à la fin.

git bisect start
git bisect bad HEAD
git bisect good abc1234

Exécutez cette commande à la fin de la recherche.

git bisect reset

Rebase, étiquettes et arbres de travail

Mettre à jour une branche locale avec rebase

Sur une branche encore locale, rebase rejoue vos commits au-dessus de origin/main. En cas de conflit, résolvez-le et indexez les fichiers avant de poursuivre. Utilisez --abort pour annuler.

git fetch origin
git rebase origin/main
git rebase --continue
git rebase --abort

Étiqueter une version

Une étiquette annotée contient un message et pointe vers un commit. Publiez-la par son nom pour envoyer uniquement cette étiquette.

git tag -a v1.0.0 -m "Release 1.0.0"
git show v1.0.0
git push origin v1.0.0

Travailler sur deux branches en parallèle

worktree add ouvre une autre branche dans un répertoire voisin. Vous pouvez ainsi changer de tâche tout en gardant votre travail courant ouvert.

git worktree add -b feature/review ../project-review main
git worktree list
git worktree remove ../project-review