====== Git ====== ===== Configuration ===== ==== Configuration de l'identité ==== git config --global user.name "John Doe" git config --global user.email "john.doe@example.com" ==== Stockage des identifiants ==== === Mise en cache pour une durée déterminée (ici, 12 heures) === git config --global credential.helper 'cache --timeout 43200' === Stockage permanant dans un fichier === git config --global credential.helper 'store --file ~/.git-credentials' === Annulation du stockage des identifiants === git config --global --unset credential.helper === Créer un alias de commande Git === git config --global alias.rename 'branch -m' === Changer l'éditeur de texte par défaut === git config --global core.editor "vim" ===== Opérations ===== ==== Revenir à l'état du dernier commit ==== git reset --hard ==== Supprimer le dernier commit ==== git reset --hard HEAD^ ==== Supprimer les n derniers commits ==== git reset --soft HEAD~n Pour annuler les modifications, remplacer soft par hard. Puis pour posser la suppression sur le dépôt distant : git push origin +HEAD Depuis un dépôt “bare”, remplacer –hard par –soft. ==== Restaurer des fichiers depuis un commit ==== git checkout c5f567 -- file1/to/restore file2/to/restore Pour restaurer les fichier avant le commit (ici 1 commit avant) : git checkout c5f567~1 -- file1/to/restore file2/to/restore ==== Fusionner les derniers commits ==== git rebase -i a7cc4794a8802708b2eaa75debb40c993f0fa958 L'ID est celui du commit qui précède le dernier membre de la fusion OU git rebase -i --root main ==== Combiner tous les commits en un seul ==== git rebase --root -i Puis remplacer toutes les occurrences de ''pick'' par ''squash'' sauf la première. Sous vim, il est possible de faire : :%s/pick/squash/g ==== Changer le commentaire du dernier commit ==== git commit --amend -m "Nouveau commentaire" ==== Changer l'auteur du dernier commit ==== git commit --amend --author="Benjamin Féron <50001976+benjamin-feron@users.noreply.github.com>" ==== Changer l'auteur de tous les commits selon un filtre ==== git filter-branch -f --env-filter ' WRONG_EMAIL="wrong@email.com" NEW_NAME="New Name" NEW_EMAIL="new@email.com" if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ] then export GIT_COMMITTER_NAME="$NEW_NAME" export GIT_COMMITTER_EMAIL="$NEW_EMAIL" fi if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ] then export GIT_AUTHOR_NAME="$NEW_NAME" export GIT_AUTHOR_EMAIL="$NEW_EMAIL" fi ' --tag-name-filter cat -- --branches --tags ==== Renommer une branche ==== === Branche courante === git branch -m === Autre branche === git branch -m ==== Supprimer une branche distante ==== git push --delete origin v2.0 ==== Pousser une branche locale ==== git push -u origin feature_branch_name ==== Pousser toutes les branches ==== git push --all origin ==== Re-synchroniser la branche courante avec la branche distante lorsqu'un simple pull ne suffit pas ==== git pull --rebase origin master ==== Supprimer un tag ==== === Localement === git tag -d === A distance === git push --delete origin ==== Supprimer tous les tags ==== git tag | xargs git tag -d ==== Voir le nombre de contributions par auteur ==== === Avec tous les emails utilisés === git shortlog -nse === Avec emails combinés === git shortlog -ns