Mémo git

Aide mémoire des commandes Git dont j'ai du mal à me souvenir

Configuration globale

La configuration globale de git est stockée dans ~/.gitconfig. Pour un projet la configuration spécifique se trouve dans .git/config.

# Lister toute la configuration
$ git config --global -l

# Configuration du mail
$ git config --global user.email name@domaine.com

Plus d'info sur git book

  Code - OSS/User/*
  !Code - OSS/User/keybindings.json

Revenir en arrière avec checkout

Retourner à l'état du projet lors d'un commit

$ git checkout <commit>

Cette méthode s'appelle detached head. Après le checkout, Head fait référence à <commit> et non plus au dernier commit (master).

Pour revenir à master.

$ git checkout master

Attention, si des commit ont été fait pendant le détachement de head, ils seront perdus (puisque plus référencé).

Remisage

$ git stash                 # équivalent à git stash save
$ git stash pop | apply     # Reprendre le dernier remisage
$ git stash list
$ git stash apply
$ git stash branch <branch_name>  # Embarque le stash dans une nouvelle branche

Merge

Comment faire un merge

L'idée du merge est de ramener les changements depuis la branche master vers la branche courrante.

D'abord se positionner sur master et faire un merge:

git checkout <your-branch>
git merge master

Comment faire un rebase

Se positionner sur la branche source (contrairement à un merge) et executer les commandes:

git checkout <your-branch>
git rebase master
git checkout master
git merge <your-branch>

Git remote

Lister les branches distantes

git remote -v

Cloner toutes les branches remote

Pour voir l'ensemble des branches du repo git il faut utliser le flag -a:

$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

Pour jeter un oeil sur une branche distante on peut utiliser la commande suivante:

$ git checkout origin/experimental

Mais pour travailler réellement sur une branche distante il faut créer la version locale de celle-ci, ce qui se fait de la façon suivante:

$ git checkout experimental

On vérifie qu'on est bien positionné sur cette nouvelle branche:

$ git branch
* experimental
  master