Git Cheat Sheet

  • | Mémo

Commandes de base

git init
Crée un dépôt Git vide dans le répertoire spécifié.
git clone (repo)
Clone le dépôt situé à (repo) sur la machine locale. Le dépôt d'origine peut être situé sur le système de fichiers local ou sur une machine distante via HTTP ou SSH.
git config user.name (name)
Définit le nom de l'auteur à utiliser pour toutes les validations dans le référentiel actuel. On utilise l'option --global pour définir les options de configuration de l'utilisateur actuel.
git add (directory)
Ajoute (directory) pour la prochaine validation. On peut aussi ajouter un fichier ou tous les fichiers qui ne sont pas encore connus avec le joker (.).
git rm (file/directory) --cached
Supprime un file du repository avec l'option --cached. Attention sans cette option cela supprime le fichier du filesystem. L'option -r permet d'agir de façon recursive sur des répertoires.
git commit -m "(message)"
Valide l'état actuel des modifications dans un "commit". On remplace (message) par la description des modifications.
git status
Liste l'état du projet locale : les fichiers modifiés prêt à être "commités" (staged), les fichiers modifiés non ajoutés (not staged), les fichiers non suivi (untracked).
git log
Affiche l'intégralité de l'historique des validations (commit).
git diff
Affiche les modifications non enregistrées entre l'index local et le répertoire de travail. A utiliser avant commit.

Annuler des changements

git revert (commit)
Crée un nouveau commit qui annule toutes les modifications apportées dans (commit), puis l'applique à la branche actuelle. Attention cela supprime les modifications mais aussi les fichiers qui ont été ajoutés (le fichier est supprimé).
git reset (file)
Supprime (file) de la zone de préparation avant "commit", mais laisse le répertoire de travail inchangé. Cela désactive un fichier "staged" pour le passer dans "unstaged" sans écraser les modifications.
git clean -n
Affiche les fichiers qui seraient supprimés du répertoire de travail. Utilisez l'indicateur -f à la place de l'indicateur -n pour exécuter le nettoyage.

La configuration de Git

git config --global user.name (name)
Définit le nom de l'auteur à utiliser pour toutes les validations de l'utilisateur actuel.
git config --global user.email (email)
Définit l'adresse e-mail de l'auteur à utiliser pour toutes les validations de l'utilisateur actuel.
git config --global alias. (alias-name) (git-command)
Crée un raccourci pour une commande Git. Par exemple : alias.glog "log --graph --oneline" définit "git glog" équivalent à "git log --graph --oneline.
git config --system core.editor (editor)
Définit l'éditeur de texte utilisé par les commandes pour tous les utilisateurs de la machine. (editor) doit être la commande qui lance l'éditeur souhaité (par exemple, vi).
git config --global --edit
Ouvre le fichier de configuration globale dans un éditeur de texte pour une édition manuelle.

Le journal Git (Logs)

git log -(limit)
Limiter le nombre de commits par (limit). Par exemple : "git log -5" sera limité à 5 commits.
git log --oneline
Condense chaque commit sur une seule ligne.
git log -p
Affiche la différence complète de chaque commit.
git log --stat
Inclue les fichiers modifiés et le nombre relatif de lignes qui ont été ajoutées ou supprimées de chacun d'eux.
git log --author= "(pattern)"
Recherche les commits d'un auteur particulier.
git log --grep="(pattern)"
Recherche des validations avec un message de validation qui correspond à (pattern).
git log (since)..(until)
Affiche les validations qui se produisent entre (since) et (until). Les arguments peuvent être un ID de validation, un nom de branche, HEAD ou tout autre type de référence de révision.
git log -- (file)
Affiche uniquement les commits contenant le fichier spécifié.
git log --graph --decorate
--graph flag dessine un graphique basé sur du texte des commits sur le côté gauche des msgs de commit. --decorate ajoute des noms de branches ou des balises de commits affichés.
git blame myfile
Affiche qui et quand a modifié le fichier (myfile).

Étiquetage : GIT TAG

git tag
Liste tous les tags. Option -l permet de rechercher dans les tags : git tag -l 'v1.8.5*'.
git tag -a (tag) -m 'ma version 1.2'
Ajoute le tag (tag) avec le message associé. (Peut aussi être utilisé sous la forme légère : git tag v1.4-lg)
On peut étiqueter un commit de cette façon git tag -a v1.2 9fceb02.
git show (tag)
Affiche le (tag) et les informations associées.
git push --tags
git pull --tags
Pousse/Récupère tous les tags sur ou du le repo. Pour pousser 1 seul tag : git push origin v1.5.
git tag -d v1.4-lw
Supprime un tag en local.
git push (repo) --delete (tag)
Supprime un (tag) sur le (repo).

Les états : GIT STASH

git stash
Sauve l'état des modifications. Pour mettre un nom sous cet état on utilise git stash save "stash name" && git stash.
git stash pop
Récupère l'état des modifications.
git stash list
Liste tous les états de modifications.

Réécrire historique/log GIT

git commit --amend
Ajoute des fichiers "staged" au dernier commit. Permet d'ajouter des oublis ou corrections dans un commit. Cela permet également de modifier le message du commit si aucun fichier est "staged".
git rebase (base)
Rebase la branche actuelle sur (base). (base) peut être un ID de commit, un nom de branche, une balise ou une référence relative à HEAD.
git reflog
Affiche un journal des modifications apportées à HEAD du référentiel local. Ajoutez le drapeau --relative-date pour afficher les informations de date ou --all pour afficher toutes les références.

GIT BRANCHES

git branch
Répertoriez toutes les branches de votre repo. Ajoutez un argument (branch) pour créer une nouvelle branche avec le nom (branch).
git branch -a
Liste toutes les branches locales et distantes
git branch -m (newname)
Renome la branche courante avec le (newname)
git branch -d (branch)
Supprime localement la branche (branch)
git push origin :(branch)
Supprime la branche distante (branch)
git checkout -b (branch)
Crée et se positionne sur une nouvelle branche nommée (branch). Si on supprime l'indicateur -b, on se positionne sur une branche existante.
git merge (branch)
Fusionne (branch) dans la branche actuelle.

REMOTE REPOSITORIES

git remote add (name) (url)
Crée une nouvelle connexion à un référentiel distant.
git fetch (remote) (branch)
Récupère une (branch) spécifique, à partir du dépôt. Laissez (branch) vide pour récupérer toutes les références distantes.
git pull (remote)
Récupére la copie distante spécifiée de la branche actuelle et la fusionne dans la copie locale.
git push (remote) (branch)
Pousse la (branch) sur le repo (remote). Crée la branche nommée (branch) dans le référentiel distant si elle n'existe pas.
git remote show (repo)
Liste les branches du (repo) et leurs mappings avec les branches locales.

GIT DIFF

git diff HEAD
Affiche la différence entre le répertoire de travail et le dernier commit.
git diff --cached
Affiche la différence entre les modifications par étapes et le dernier commit

GIT RESET

git reset
Réinitialise la zone de préparation pour qu'elle corresponde à la validation la plus récente, mais laisse le répertoire de travail inchangé.
git reset --hard
Réinitialise la zone de préparation et le répertoire de travail pour correspondre à la validation la plus récente et écrase toutes les modifications dans le répertoire de travail.
git reset (commit)
Déplace le curseur de la branche actuelle vers (commit), réinitialise la zone de préparation mais laisse le répertoire de travail en l'état. Les fichiers et répertoires ne sont pas supprimés.
git reset --hard (commit)
Identique à la précédente, mais réinitialise à la fois la zone de préparation et le répertoire de travail. Les fichiers et répertoires sont supprimés.

GIT REBASE

git rebase -i (base)
Rebase interactivement la branche actuelle sur (base). Lance l'éditeur pour entrer des commandes indiquant comment chaque commit sera transféré vers la nouvelle base.

GIT PULL

git pull --rebase (remote)
Récupére la copie distante de la branche actuelle et la rebase dans la copie locale. Utilise git rebase au lieu de merge pour intégrer les branches.

GIT PUSH

git push (remote) --force
Force le push même si cela entraîne une fusion non rapide. N'utilisez pas l'indicateur --force, sauf si vous êtes absolument sûr de savoir ce que vous faites.
git push (remote) --all
Pousse toutes les branches locales vers le repo spécifié.
git push (remote) --tags
Les balises ne sont pas automatiquement envoyées lorsque vous poussez une branche ou utilisez le --all. L'indicateur --tags envoie toutes vos balises locales au référentiel distant.
L'auteur de cet article
Julien Krier
Responsable Digital, ayant occupé différents postes en informatique depuis 2001, Julien Krier a travaillé sur de multiples plateformes, sites de contenu ou e-commerce à fort trafic. Il est spécialisé dans les technologies web sur les CMS comme Drupal et les Framework Php comme Symfony.
Cet article vous a aidé?
Average: 4.5 (4 votes)
Partagez cet article
Articles sur le même sujet
Patcher un module de DrupalIl peut arriver que sur une mise à jour par exemple on se retrouve avec un bug sur un module. Des patchs peuvent alors corriger le problème.
Utiliser Bitbucket pour gérer ses modules custom DrupalPour simplifier les mises à jour de ses modules custom Drupal, il est préférable de les versioner. Voici comment utiliser Bit-Bucket et composer pour gérer ses propres modules custom.