Pour commencer, un classique, des infos qu’on retrouve dès les premières recherche sur stack overflow à propos de git.
Pas de mis en page, juste un post pour retrouver facilement mes trucs et astuce git.
Tout d’abord mes alias, quand on tape ces commandes 100 fois par jours, les alias c’est le bien
Config
$ cat ~/.gitconfig
[alias]
st = status
br = branch
co = checkout
cm = commit -m
ca = commit --amend
di = diff
dic = diff --cached
diw = diff --color-words
diwc = diff --cached --color-words
l = log --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ci) %C(bold blue)<%an>%Creset' --abbrev-commit --date=iso
ll = log -5 --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ci) %C(bold blue)<%an>%Creset' --abbrev-commit
lll = log -10 --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ci) %C(bold blue)<%an>%Creset' --abbrev-commit
l2 = log --graph --decorate --pretty=oneline --abbrev-commit --all
l3 = log --graph --full-history --all --color --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s"
wc = whatchanged -p
# you can do this if you didn't push. commit is lost but all the changes return to "stagged for commit"
undo-commit = reset --soft HEAD^
Tips
Si vous êtes sous mac, et nul avec vimdiff, je vous conseil cette commande :
$ git difftool -t opendiff -y
Pour chaque fichier différent, il va ouvrir l’excellent “FileMerge”.
Tag
$ git tag -a v1.3.4 -m "add debug"
Récupérer un ancien fichier
$ git checkout 12fdfd234654fd file/to/restore
Diff apres un git pull
Vous venez de faire git pull et vous avez supprimé le commit..commit ? pas de panique :
$ git diff master@{1} master
$ git diff --stat master@{1} master
Le stash
Perso, j’essaie de ne jamais dépasser 3 stash dans ma liste et jamais rien d’important.
Pour sauvegarder le travail en cours sans commit
$ git stash
Pour sauvegarder le travail en cours sans commit et avec un message
$ git stash save "mon message"
Lister les stash
$ git stash list
> stash@{0}: WIP on master: e71813e..."
Appliquer le dernier stash, attention cela le supprime de la liste
$ git stash pop
Appliquer un stash spécifique. Le stash restera dans la liste.
$ git stash apply stash@{0}
Supprimer un stash spécifique
$ git stash drop stash@{1}
Récupérer les branch
Si pour X raison vous etes désynchro d’un repo (disons upstream) et que lorsque vous tapez
git branch -r
il n’y a pas tout, faite :
git fetch upstream
//Pour tous :
git fetch --all
Cherry pick
Cherry pick permet de prendre un seule commit pour le ramener sur la branche en cours :
$ git log feature
> 23dc12f - Merge remote-tracking branch 'upstream/feature/my-selection'
> 9b8d100 - When user add boat to favorites, use javascript to reload part
> dbf9526 - Change assets to display well jquery ui calendar on production
$ git checkout master
$ git cherry-pick 9b8d100
// le commit 9b8d100 se trouve maintenant sur master :)
Meilleur utilisation de git :
Pour faire une sorte de code review avant le commit.
git add -p