Aide Git
Configuration
git config --global user.name "Aymeric Lagier"
git config --global user.email "aymeric@lagier.xyz"
git config --list
Ces informations se retrouvent dans ~/.gitconfig
Connaître la branche courante
git status
Init
git init <project_name>
Ajout de fichier
Ajout récursif
git add .
Ajout en prenant en compte les rename/delete
git add -A
Commit
git commit -am "Message"
-a
: stage tous les fichiers trackés qui sont modifiés et supprimés (ne touche pas aux fichiers qui n’ont pas été ajoutés)
Retourner au commit précédent
git reset HEAD^
Retourner à un commit en particulier
git reset <commit_id>
Lister tous les fichiers trackés par git
git ls-files
Unstage un fichier
git reset HEAD <file>
Ne revert pas les modifications sur le fichier
Renommer/Déplacer un fichier
git mv <name> <new_name>
Si c’est fait avec juste le mv
de bash, le fichier sera considéré comme supprimé et un nouveau fichier “untracked” sera vu.
Supprimer un fichier
git rm <name>
Pour annuler la suppression
git reset HEAD <file>
git checkout -- <file>
Mise à jour de l’index git
git add -u
Logs
git log
Historique des commandes git
git reflog
Création d’un alias
git config --global alias.<alias_name> "<command_without_git_prefix>"
Appel de l’alias
git <alias_name>
Diff
Entre le working directory et le staging
En CLI :
git diff
Avec l’outil de diff configuré
git difftool
Entre le working directory et le .git
En CLI :
git diff HEAD
Avec l’outil de diff configuré
git difftool HEAD
Entre le staging et le .git
En CLI :
git diff --staged HEAD
Avec l’outil de diff configuré
git difftool --staged HEAD
Pour un fichier particulier
git diff -- <file_name>
Entre un commit et le dernier commit
git diff <commit_hash> HEAD
Entre le dernier commit et celui juste avant
git diff HEAD HEAD^
Entre 2 commits
git diff <commit_hash_1> <commit_hash_2>
Entre le .git et l’origin
git diff master origin/master
Entre 2 branches
git diff <branche1> <branche2>
Entre 2 tags
git diff <tag1> <tag2>
Branching
Lister les branches
Local et remote
git branch -a
Local
git branch
Créer une branche
git branch <branch_name>
Changer de branche
git checkout <branch_name>
Créer une branche et faire un checkout
git checkout -b <branch_name>
Renommer une branche
git branch -m <old_branch_name> <new_branch_name>
Supprimer une branche
git branch -d <banch_name>
- Ne peut s’effectuer que depuis une autre branche
- Utile après le merge d’une feature branch vers une autre branche
Update
git pull
git pull
git fetch
git fetch
- Ne fusionne pas les modifications distantes avec la branche locale
- Utile pour mettre à jour les informations de la vue de l’origin
Merging
git checkout <destination_branch_name>
git merge <feature_branch_name>
Fast-forward
- Inclut tous les commits de la feature branch dans la branche de destination
- Possible uniquement si la branche de destination n’a pas eu de nouveaux commits depuis la création de la feature branch
Merge sans fast-forward
git merge <feature_branch_name> --no-ff
- Permet de spécifier un message de commit
- Les commits de la feature branch ne seront pas indiqués dans l’historique de la branche de destination
Gestion des conflits lors d’un merge
git mergetool
git commit -m "<commit_message>"
Rebase
Avancer le point de fork entre 2 branches en appliquant les commits de la branche source sur la branche destination.
Avant le rebase
Après le rebase
Depuis une feature branch
git rebase <source_branch>
Annuler un rebase
git rebase --abort
Continuer un rebase après un conflit
git rebase --continue
Rebase depuis l’origin
git pull --rebase origin <branch_name>
Stash
- Met de côté des modifications sans les commiter (Work In Progress)
- Possibilité de faire un stash sur la branche master et de le récupérer sur une autre branche
Sauvegarder des modifications (fichiers tracked uniquement)
git stash [save "<stash_message>"]
Sauvegarder les modifications de tous les fichiers
git stash -u
Récupérer les modifications du dernier stash
git stash apply
Récupérer les modifications d’un stash en particulier
git stash apply stash@{<stash_id>}
Supprimer le dernier stash
git stash drop
Supprimer un stash en particulier
git stash drop stash@{<stash_id>}
Supprimer tous les stash
git stash clear
Récupérer le dernier stash et le supprimer
git stash pop
Lister les stash
git stash list
Afficher les détails d’un stash
git stash show stash@{<stash_index>}
Stash sur une autre branche
git stash -u
git stash branch <new_branch>
- Créé la branche
- Récupère le stash
- Supprimer le stash
Tag
Créer un tag simple
git tag <tag_name>
Créer un tag annoté
git tag -a <tag_name> -m "<commit_message>"
Créer un tag annoté sur un commit précis
git tag -a <tag_name> <commit_id>
Lister les tags
git tag --list
Voir le commit associé au tag
git show <tag_name>
Supprimer un tag
git tag --delete <tag_name>
Changer un tag de commit
git tag -a <tag_name> -f <new_commit_id>
Push d’un tag en précis
git push origin <tag_name>
Push de tous les tags
git push origin <branch_name> --tags
Supprimer un tag sur l’origin
git push origin :<tag_name>