Plop.

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