Git
Trucs et astuces
Description : Trucs et astuces Git
Niveau requis : débutant (avec une première expérience Git)
Temps : ~ 20 min
Pour commencer
git <command> -h
Conseil 1 : apprenez Git en ligne de commande
Conseil 2 : RTFM
Configurer Git
git config --list
user.name=Yann Moisan
user.email=xxx@gmail.com
Vérifier son identité
Options courantes
color.ui=true
push.default=simple
merge.tool=vimdiff
merge.stat=true
url.https://.insteadof=git://
mergetool.keepbackup=false
sauvegardé dans le fichier ~/.gitconfig
alias.st=status -sb
alias.ci=commit
alias.br=branch
alias.co=checkout
alias.df=diff
alias.lg=log -p
alias.lg1=log --pretty=format:'%h - %an, %ar : %s'
alias.lg2=log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
alias.who=shortlog -sne
alias.oneline=log --pretty=oneline --abbrev-commit --graph
alias.changes=diff --name-status
alias.dic=diff --cached
alias.diffstat=diff --stat
alias.latest=for-each-ref --sort=-committerdate --format='%(committerdate:short) %(refname:short) [%(committername)]'
alias.ds=diff --staged
Git permet de configurer des alias :
à privilégier par rapport aux alias du shell
branch.master.rebase=true
branch.develop.rebase=true
Rebase auto pour certaines branches
Shell
Vérifiez que la completion est bien configurée
git co<Tab>
Utilisez Zsh
Utilisez un super prompt (ex: avec prezto)
nom de la branche et indicateur de statut à droite
Çà fonctionne même avec les options…
✭ stash
◼ untracked
✱ not staged
⬆ need to push
✚ staged to commit
═ merge en cours
Tig
tig est un outil en mode texte, clavier-friendly, basé sur ncurses, pour interagir avec Git
h : affiche l'aide
Par défaut, tig affiche la vue historique
j/k permet de se déplacer dans les commits
<Enter> affiche le détail d'un commit
Vue statut (avec s)
pour préparer les commits
permet de stage / unstage
plus simple que l'équivalent git add <file> / git reset HEAD <file>
stage a single line
plus simple que l'équivalent git add -p
revert a modification (git checkout -- <file>)
u
1
!
Configurer tig
Comme tous les outils Unix, tig est largement configurable
❯❯❯ cat ~/.tigrc
bind stash D !?git stash drop %(stash)
bind stash A !?git stash apply %(stash)
tig blame <file>
Blame
Branches
Comparer 2 branches
Comparer 2 branches (encore plus fort)
pas besoin de se souvenir de l'ordre
git log --oneline --left-right master...experiment
git log --oneline master..experiment
affiche les commits de experiment qui ne sont pas accessibles par master
BREAKING NEWS
changez de branches
git checkout -
changez de répertoire
cd -
git branch --merged
git branch --no-merged
Merge
Utiliser Vim comme outil de merge
:diffg RE " get from REMOTE
:diffg BA " get from BASE
:diffg LO " get from LOCAL
git mergetool
Mais aussi…
git-flow : un workflow Git
hub : pour interagir avec GitHub en CLI
git bisect
Pro Git : bouquin très complet, disponible en ligne sur Git.