Aide mémoire GIT
Table des matières
Un tutoriel interactif
Pour apprendre Git de manière interactive, je vous conseille le site learngitbranching.js.org.
Personnaliser
Définir son identité :
git config --global user.email "email@example.com"
git config --global user.name "Valentin Brosseau"
Voir la configuration :
git config --list
Setup & Init
Créer un nouveau dépôt local (dans le dossier courant) :
git init
Si vous projet
Si votre projet est sur github/gitlab, vous devez cloner le dépôt et non le créer (via un git clone
).
Cloner un dépôt existant :
git clone ssh://user@domain.com/repo.git
Créer un fichier « .gitignore » :
# Création du fichier
vim .gitignore
# …
git add .gitignore
git commit -m "Ajout gitignore"
Créer un fichier « .gitignore » en utilisant un template « Windows »:
curl -s https://www.gitignore.io/api/windows > .gitignore
git add .gitignore
git commit -m "Ajout gitignore"
Créer un fichier « .gitignore » en utilisant un template « MacOS »:
curl -s https://www.gitignore.io/api/osx > .gitignore
git add .gitignore
git commit -m "Ajout gitignore"
Modifications locales
Fichiers modifiés dans votre répertoire de travail :
git status
Modifications sur les fichiers suivis :
git diff
Ajouter tous les changements actuels au prochain commit :
git add
Ajouter tous les changements de toute l’arborescence :
git add --all
Commiter tous les changements locaux des fichiers suivis :
git commit -a
Commiter les modifications en attente :
git commit -m 'Votre message'
Modifier le commit précédent :
git commit --amend
# ou
git commit --am
Historique de Commit
Afficher tous les commits :
git log
Afficher tous les commits (uniquement l’identifiant et le texte) :
git log --oneline
Afficher l’historique d’un utilisateur uniquement :
git log --author="utilisateur"
Afficher l’historique des modifications pour un fichier uniquement :
git log -p <fichier>
Affiche les changements (en détail) dans le fichier :
git blame <file>
Branches & Tags
Lister toutes les branches :
git branch
Changer de branche :
git checkout <votre-branche>
Créer une nouvelle branche en se basant sur le HEAD :
git branch <votre-branche>
Créer une nouvelle branche de suivi, basée sur une branche distante :
git branch --track <nouvelle-branche> <branche-distante>
Supprimer une branche :
git branch -d <votre-branche>
Marquer le commit courant avec un tag :
git tag <non-du-tag>
Merge & Rebase
Fusionner la branche <votre-branche>
avec la master :
git checkout master
git merge <votre-branche>
⚠️ Attention ⚠️
Jouer avec l’historique est toujours dangereux surtout si vous travaillez à plusieurs !
Mettre à jour votre branche avec le code de la master :
git checkout <votre-branch>
git rebase master
Annuler un rebase en cours :
git rebase --abort
Continuer un rebase après avoir résolu des conflits :
git rebase --continue
Travailler avec un dépôt distant
Accès à votre repository distant
Même si Github/Gitlab vous permet de récupérer un repository distant, vous devez toujours le cloner la première fois. Cette étape de clone est nécessaire pour initialiser le dossier local, et donc pour pouvoir y travailler.
Vous devez donc toujours utiliser la commande git clone
pour récupérer un repository distant. La récupération d'un projet est à réaliser en ssh, et non en https (voir Aide mémoire SSH).
Lister tous les dépôts distants configurés :
git remote -v
Monter les informations d'un dépôt distant :
git remote show origin
Ajouter un nouveau dépôt distant, nommé <remote> :
git remote add <remote> <url>
Synchroniser la branche « origin » avec la master. Et indiquer origin comme le dépôt distant par défaut.
git push -u origin master
Télécharger toutes les modifications d'un dépôt distant nommé <remote>, sans les fusionner :
git fetch <remote>
Télécharger les modifications et les fusionner directement dans le HEAD :
git remote pull <remote> <url>
Fusionner les modifications de la master
distante sur la branche courante :
git pull origin master
Récupérer toutes les modifications du HEAD dans le dépôt local :
git pull
# ou
git pull origin
Publier les modifications locales sur un dépôt distant :
git push
ou
git push remote <remote> <branch>
Publier les tags :
git push --tags
Annulation
Annuler le dernier git add
:
git reset HEAD
Annuler les modifications locales d'un fichier spécifique :
git checkout HEAD <file>
Annuler un commit (création d’un commit avec les modifications inverses) :
git revert <commit>
Placer le pointeur du HEAD sur un commit précédent. Conserve toutes les modifications effectuées depuis :
git reset <commit>
⚠️ Annuler toutes les modifications dans le répertoire de travail :
git reset --hard HEAD
⚠️ Placer le pointeur du HEAD sur un commit précédent. Annule toutes les modifications effectuées depuis :
git reset --hard <commit>
Les clients graphiques
Git ne s'utilise pas forcément en ligne de commande. Il existe de nombreux clients graphiques qui permettent de visualiser l'historique des commits, de gérer les branches, de faire des merges, etc.
L'idée derrière ces outils c'est que Git ne doit pas être un frein à la productivité. Vous devez donc trouver le bon équilibre entre l'utilisation de la ligne de commande et l'utilisation d'un client graphique (si vous n'êtes pas à l'aise avec la ligne de commande).