Table des matières
Gestion des commits
Cette page explique certaines opérations courantes sur les commits (git commit
, git log
).
Commiter les changements
Avec message:
$ git commit -m "Correction de bogue."
En ajoutant les changements :
$ git commit -a -m "Correction de bogue."
Spécifier l'auteur:
$ git commit --author="User Name <username@domain.com>" -m "The commit message"
Changer le message d'un commit
Le commit ne doit pas avoir été poussé.
$ git commit --amend -m "Nouveau message"
Voir les commentaires à ce sujet sur SO
Pour changer le message d'un X message précédent non poussé :
$ git rebase -i HEAD~X
Changer les messages dans l'éditeur. Mettre edit
au lieu de pick
.
$ git commit --amend $ git rebase --continue
Annuler un commit
Annuler le dernier commit et garder les changements:
$ git reset --soft HEAD^
Annuler le dernier commit et ne pas garder les changements:
$ git reset --hard HEAD^
Pour annuler les deux derniers commits:
$ git reset --hard HEAD^^
Cherry-Pick de commits
Le cherry-pick permet de prendre un commit d'une autre branche et de l'appliquer sur la branche actuelle. Ceci fonctionne avec le SHA-1 du commit. On peut utiliser les premiers caractères du SHA1.
Pour appliquer un commit d'une autre branche à la branche courante:
$ git cherry-pick <commit-hash>
$ git cherry-pick 91e263a
Ceci aura pour effet d'avoir un commit supplémentaire sur la page actuelle, avec le même message et le même auteur que le commit original.
Liste des commits d'une autre branche
On utilise la commande log pour voir les commits d'une autre branche et faire le cherry-pick.
Liste des commits sur une autre branche avec le hash:
$ git log branche-courante..autre-branche --pretty=oneline $ git log branche-courante..autre-branche --pretty="%h - %an, %ar : %s"
On peut utiliser --no-pager
pour avoir la sortie des commits directement dans le shell (stdout).
Chercher les commits par message
Rechercher test
dans les messages de tous les commits:
$ git --no-pager log --all --pretty="%h - %an, %ar : %s" --grep='test'
Signer les commits (mac)
Télécharger et installer GnuPG à partir de ce site (GnuPG for OS X - Installer for GnuPG).
Une fois installé, ouvrir un terminal:
$ gpg2 --default-new-key-algo rsa4096 --gen-key
Lister les pairs de clés:
$ gpg2 --list-secret-keys --keyid-format LONG /Users/username/.gnupg/pubring.kbx ---------------------------------- sec rsa4096/80D57A25EBAE32A0 2019-09-10 [SC] [expires: 2022-09-09] EB3112493D4B76016338A78980F57E25EBAE23A0 uid [ultimate] Stéphane Gariépy <email@example.com> ssb rsa4096/0E45DE2D3A52DF89 2019-09-10 [E] [expires: 2022-09-09]
Dans l'exemple précédent, la clé voulue a le ID 80D57A25EBAE32A0
.
Exporter la clé publique en faisant la commande suivante en ayant le bon identifiant de clé :
$ gpg2 --armor --export 80D57A25EBAE32A0
Ajouter la clé publique dans la section GPG Keys de GitLab/GitHub.
Avec le même identifiant de clé, ajouter dans la config de Git:
$ git config --global user.signingkey 80D57A25EBAE32A0
Supprimer des fichiers commités
$ echo 'node_modules' >> .gitignore $ git rm -r --cached node_modules $ git commit -am 'ignore node_modules'