informatique:git
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| informatique:git [2018/09/27 05:28] – [Des alias pour gagner du temps] alexis | informatique:git [2024/12/03 07:24] (Version actuelle) – alexis | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| ====== Git ====== | ====== Git ====== | ||
| - | + | <catlist informatique:git -sortByTitle | |
| - | FIXME → Séparer la page comme celle pour mysql | + | < |
| - | + | ||
| - | ===== Configuration ===== | + | |
| - | Il est possible de modifier les préférences en utilisant soit git directement soit en modifiant son fichier de configuration. | + | |
| - | <WRAP group> | + | |
| - | <WRAP half column> | + | |
| - | ==== En ligne de commande ==== | + | |
| - | <code bash> | + | |
| - | git config --global user.name "Nom et prénom de l' | + | |
| - | + | ||
| - | git config --global user.email " | + | |
| - | + | ||
| - | git config --global color.ui " | + | |
| - | + | ||
| - | git config --global core.editor vim # Choix de l' | + | |
| - | + | ||
| - | git config --global help.autocorrect 1 # Auto-correction des commandes | + | |
| - | + | ||
| - | git config --global core.autocrlf false # Non conversion du caractère de fin de ligne | + | |
| - | + | ||
| - | git config --global commit.template < | + | |
| - | + | ||
| - | git config --global alias.st ' | + | |
| - | </ | + | |
| - | + | ||
| - | <WRAP alert> | + | |
| - | Pour supprimer un élément de la configuration, | + | |
| - | <code bash> | + | |
| - | git config | + | |
| - | </code> | + | |
| - | </WRAP> | + | |
| - | + | ||
| - | <WRAP tip> | + | |
| - | En utilisant '' | + | |
| - | * Avec '' | + | |
| - | * Avec '' | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | <WRAP half column> | + | |
| - | ==== Avec un fichier de configuration ==== | + | |
| - | Le fichier a modifier est le fichier // | + | |
| - | <code ini> | + | |
| - | [user] | + | |
| - | email = Adresse email de l' | + | |
| - | name = Nom et prénom de l' | + | |
| - | [core] | + | |
| - | editor = vim | + | |
| - | autocrlf = false | + | |
| - | [color] | + | |
| - | ui = auto | + | |
| - | [help] | + | |
| - | autocorrect = 1 | + | |
| - | [alias] | + | |
| - | st = status | + | |
| - | [commit] | + | |
| - | template = < | + | |
| - | </ | + | |
| - | <WRAP alert> | + | |
| - | Pour supprimer un élément de la configuration, | + | |
| - | </ | + | |
| - | + | ||
| - | <WRAP tip> | + | |
| - | En modifiant le fichier '' | + | |
| - | * En modifiant le fichier ''/ | + | |
| - | * En modifiant le fichier '' | + | |
| - | </ | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | <WRAP info> | + | |
| - | Lorsque l' | + | |
| - | </ | + | |
| - | <WRAP info> | + | |
| - | Lorsqu' | + | |
| - | Cela permet de : | + | |
| - | * donner des indications sur ce que doit contenir le message de validation, | + | |
| - | * faciliter la rédaction du message de validation en y intégrant les données obligatoires automatiquement. | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Des alias pour gagner du temps ==== | + | |
| - | En plus de raccourcir certaines commandes, les alias permettent aussi de combiner des actions répétitives en une seule commande. | + | |
| - | Voici les alias que j' | + | |
| - | <code ini .gitconfig> | + | |
| - | [alias] | + | |
| - | ; List aliases | + | |
| - | alias = !git config --get-regexp ' | + | |
| - | ; Amend content to the last commit | + | |
| - | amend = commit --amend --no-edit | + | |
| - | ; Check for whitespace errors | + | |
| - | check = diff --check HEAD | + | |
| - | ; Fixup a commit into another | + | |
| - | fixup = "!sh -c 'git diff-index --quiet HEAD -- ; if [ $? -eq 1 ]; then echo \" | + | |
| - | ; Retrieve a PR locally | + | |
| - | pr = !sh -c 'git fetch && git checkout pr/$1' - | + | |
| - | ; Show log on oneline | + | |
| - | oneline = log --oneline --abbrev-commit --graph | + | |
| - | </ | + | |
| - | <WRAP info> | + | |
| - | La commande '':'' | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | FIXME Ajouter une section sur les préférences de l' | + | |
| <code bash> | <code bash> | ||
| # Ajouter un dépôt distant | # Ajouter un dépôt distant | ||
| git remote add <nom> <url> | git remote add <nom> <url> | ||
| </ | </ | ||
| - | ===== Utilisation ===== | + | |
| - | + | * [[https:// | |
| - | ==== Utiliser les logs ==== | + | * [[https://grimoire.ca/ |
| - | L' | + | |
| - | <code bash> | + | * Ajouter une section sur les préférences de l'utilisateur par dépot |
| - | # Afficher les logs | + | </WRAP> |
| - | git log | + | |
| - | + | ||
| - | # Afficher les logs avec les statistiques | + | |
| - | git log --stat | + | |
| - | + | ||
| - | # Afficher les logs des n dernières révisions | + | |
| - | git log -n | + | |
| - | + | ||
| - | # Afficher les logs sur une ligne | + | |
| - | git log --oneline | + | |
| - | + | ||
| - | # Afficher les logs entre 2 révisions | + | |
| - | git log < | + | |
| - | + | ||
| - | # Afficher l' | + | |
| - | git log --pretty=oneline --abbrev-commit --graph --decorate | + | |
| - | + | ||
| - | # Afficher la liste des tags par date | + | |
| - | git log --date-order --graph --tags --simplify-by-decoration --pretty=format:' | + | |
| - | </ | + | |
| - | ==== Utiliser les commits ==== | + | |
| - | * Révisionner du code | + | |
| - | <code bash> | + | |
| - | # Ajouter les fichiers à révisionner | + | |
| - | git add < | + | |
| - | # Révisionner les modifications | + | |
| - | git commit | + | |
| - | # À ce moment, l' | + | |
| - | + | ||
| - | # Il est aussi possible de faire tout ça automatiquement | + | |
| - | git commit -a -m < | + | |
| - | </ | + | |
| - | + | ||
| - | * Annuler l' | + | |
| - | <code bash> | + | |
| - | git reset HEAD < | + | |
| - | </ | + | |
| - | + | ||
| - | * Modifier le nom de l' | + | |
| - | <code bash> | + | |
| - | # Attention, l' | + | |
| - | git commit --amend --reset-author | + | |
| - | </ | + | |
| - | + | ||
| - | * Modifier la dernière révision (([[http:// | + | |
| - | <code bash> | + | |
| - | # Attention, l' | + | |
| - | git commit --amend | + | |
| - | </ | + | |
| - | + | ||
| - | * Modifier une ancienne révision (([[http:// | + | |
| - | <code bash> | + | |
| - | # Pour modifier la révision bbc643cd | + | |
| - | git rebase --interactive bbc643cd^ | + | |
| - | # À ce moment, l' | + | |
| - | # Changer pick pour edit en face des révisions à modifier. | + | |
| - | + | ||
| - | # Faire les changements nécessaire et ajouter les fichiers. | + | |
| - | git add < | + | |
| - | + | ||
| - | # Appliquer les changements | + | |
| - | git commit --amend | + | |
| - | + | ||
| - | # Poursuivre l' | + | |
| - | git rebase --continue | + | |
| - | </ | + | |
| - | + | ||
| - | * Supprimer la dernière révision | + | |
| - | <code bash> | + | |
| - | # Si la révision n'a pas été partagée et que l'on veut conserver les modifications | + | |
| - | git reset --soft HEAD~1 | + | |
| - | + | ||
| - | # Si la révision n'a pas été partagée et que l'on veut supprimer les modifications | + | |
| - | git reset --hard HEAD~1 | + | |
| - | + | ||
| - | # Si la révision a été partagée | + | |
| - | git revert HEAD | + | |
| - | </ | + | |
| - | + | ||
| - | * Pour aller plus loin | + | |
| - | * [[http:// | + | |
| - | * [[http:// | + | |
| - | * [[http:// | + | |
| - | | + | |
| - | + | ||
| - | ==== Utiliser les branches ==== | + | |
| - | * Afficher les branches | + | |
| - | <code bash> | + | |
| - | # Locales | + | |
| - | git branch | + | |
| - | # Distantes | + | |
| - | git branch -r | + | |
| - | # Toutes | + | |
| - | git branch -a | + | |
| - | # Déjà disponibles dans la branche courante | + | |
| - | git branch --merged | + | |
| - | # Pas encore disponibles dans la branche courante | + | |
| - | git branch --no-merged | + | |
| - | </ | + | |
| - | + | ||
| - | * Créer une branche locale | + | |
| - | <code bash> | + | |
| - | # La manière rapide | + | |
| - | git checkout -b < | + | |
| - | + | ||
| - | # La manière détaillée | + | |
| - | git branch < | + | |
| - | git checkout < | + | |
| - | </ | + | |
| - | + | ||
| - | * Récupérer une branche distante | + | |
| - | <code bash> | + | |
| - | # Récupérer la liste des branches distantes disponibles | + | |
| - | git fetch origin | + | |
| - | # Récupérer la liste des branches distantes disponibles en supprimant les branches supprimées - version longue | + | |
| - | git fetch --prune origin | + | |
| - | # Récupérer la liste des branches distantes disponibles en supprimant les branches supprimées - version courte | + | |
| - | git fetch -p origin | + | |
| - | + | ||
| - | # Création d'une branche locale à partir de la branche distante | + | |
| - | git checkout -b < | + | |
| - | </ | + | |
| - | + | ||
| - | * Changer le nom d'une branche locale | + | |
| - | <code bash> | + | |
| - | git branch -m < | + | |
| - | </ | + | |
| - | + | ||
| - | * Supprimer une branche locale | + | |
| - | <code bash> | + | |
| - | # Supprimer une branche qui a été fusionnée | + | |
| - | git branch -d < | + | |
| - | # Forcer la suppression d'une branche | + | |
| - | git branch -D < | + | |
| - | </ | + | |
| - | + | ||
| - | * Supprimer une branche distante | + | |
| - | <code bash> | + | |
| - | # La manière compréhensible | + | |
| - | git push --delete origin < | + | |
| - | # La manière moins compréhensible au premier abord | + | |
| - | git push origin : | + | |
| - | # et son raccourci | + | |
| - | git push origin :< | + | |
| - | </ | + | |
| - | + | ||
| - | * Lier une branche existante à une branche distante | + | |
| - | <code bash> | + | |
| - | # Syntaxe courte | + | |
| - | git branch -u < | + | |
| - | + | ||
| - | # Syntaxe longue | + | |
| - | git branch --set-upstream-to < | + | |
| - | </ | + | |
| - | + | ||
| - | * Supprimer les branches locales obsolètes | + | |
| - | <code bash> | + | |
| - | git remote prune origin | + | |
| - | </ | + | |
| - | + | ||
| - | * Comparer un fichier entre 2 branches | + | |
| - | <code bash> | + | |
| - | git diff < | + | |
| - | + | ||
| - | # Avec cette syntaxe, la référence peut être une branche, un tag, un commit, ... | + | |
| - | git diff < | + | |
| - | </ | + | |
| - | + | ||
| - | * Pousser une branche | + | |
| - | <code bash> | + | |
| - | # Quand les références des branches sont identiques | + | |
| - | git push < | + | |
| - | + | ||
| - | # Quand les références des branches sont différentes | + | |
| - | git push < | + | |
| - | </ | + | |
| - | + | ||
| - | * Afficher le point d' | + | |
| - | <code bash> | + | |
| - | git merge-base HEAD < | + | |
| - | </ | + | |
| - | + | ||
| - | * Revenir à la branche précédente | + | |
| - | <code bash> | + | |
| - | git checkout - | + | |
| - | </ | + | |
| - | + | ||
| - | * Pour aller plus loin | + | |
| - | - [[https://gist.github.com/jbgo/1944238|How to recover a git branch you accidentally deleted]] | + | |
| - | | + | |
| - | ==== Utiliser les tags ==== | + | |
| - | * Lister les tags | + | |
| - | <code bash> | + | |
| - | git tag | + | |
| - | </code> | + | |
| - | + | ||
| - | * Créer un tag à usage privé ou temporaire (tag léger) | + | |
| - | <code bash> | + | |
| - | git tag < | + | |
| - | </ | + | |
| - | + | ||
| - | * Créer un tag à usage public (tag annoté) | + | |
| - | <code bash> | + | |
| - | git tag -a < | + | |
| - | </ | + | |
| - | + | ||
| - | * Créer un tag distant | + | |
| - | Il faut que le tag existe déjà localement pour pouvoir le créer sur un // | + | |
| - | <code bash> | + | |
| - | # Pour créer un seul tag | + | |
| - | git push origin < | + | |
| - | # Pour créer tous les tags | + | |
| - | git push --tags | + | |
| - | </ | + | |
| - | + | ||
| - | * Supprimer un tag distant (([[http:// | + | |
| - | <code bash> | + | |
| - | # La manière compréhensible | + | |
| - | git push --delete origin < | + | |
| - | # La manière moins compréhensible au premier abord | + | |
| - | git push origin : | + | |
| - | # et son raccourci | + | |
| - | git push origin :< | + | |
| - | </ | + | |
| - | + | ||
| - | * Remplacer un tag léger par un tag annoté (([[http:// | + | |
| - | <code bash> | + | |
| - | # Récupérer le code associé au tag | + | |
| - | git checkout < | + | |
| - | + | ||
| - | # Supprimer le tag local | + | |
| - | git tag -d < | + | |
| - | + | ||
| - | # Créer le tag annoté antidaté à la date de la révision | + | |
| - | GIT_COMMITTER_DATE=" | + | |
| - | + | ||
| - | # Supprimer le tag distant | + | |
| - | git push origin : | + | |
| - | + | ||
| - | # Créer le tag distant | + | |
| - | git push --tags | + | |
| - | </ | + | |
| - | ==== Utiliser les notes ==== | + | |
| - | + | ||
| - | * Ajouter une note sur un commit | + | |
| - | <code bash> | + | |
| - | # Sans espace de nom | + | |
| - | git notes add -m < | + | |
| - | + | ||
| - | # Avec espace de nom | + | |
| - | git notes --ref=< | + | |
| - | </ | + | |
| - | + | ||
| - | * Voir une note | + | |
| - | <code bash> | + | |
| - | # Sans espace de nom | + | |
| - | git log | + | |
| - | + | ||
| - | # Avec espace de nom (les caractères de remplacement sont supportés) | + | |
| - | git log --show-notes=< | + | |
| - | </ | + | |
| - | + | ||
| - | * Éditer une note | + | |
| - | <code bash> | + | |
| - | # Sans espace de nom | + | |
| - | git notes edit < | + | |
| - | + | ||
| - | # Avec espace de nom | + | |
| - | git notes --ref=< | + | |
| - | </ | + | |
| - | + | ||
| - | * Pour aller plus loin | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | + | ||
| - | ==== Divers ==== | + | |
| - | * Créer et appliquer un patch (([[https:// | + | |
| - | <code bash> | + | |
| - | # Création d'un fichier patch | + | |
| - | git format-patch < | + | |
| - | + | ||
| - | # Création d'un fichier patch en changeant le chemin d' | + | |
| - | git format-patch < | + | |
| - | + | ||
| - | # Vérification du patch | + | |
| - | git apply --check < | + | |
| - | + | ||
| - | # Application des modifications apportées par le patch | + | |
| - | git apply < | + | |
| - | + | ||
| - | # Application des commits apportés par le patch | + | |
| - | git am < | + | |
| - | </ | + | |
| - | + | ||
| - | * Modifier l' | + | |
| - | <code bash> | + | |
| - | git rebase -i < | + | |
| - | </ | + | |
| - | + | ||
| - | * Ajouter des fichiers à l' | + | |
| - | <code bash> | + | |
| - | git add -i | + | |
| - | </ | + | |
| - | + | ||
| - | * Récupérer un fichier d'un révision particulière | + | |
| - | <code bash> | + | |
| - | git checkout < | + | |
| - | </ | + | |
| - | + | ||
| - | * Afficher un fichier d'un révision particulière | + | |
| - | <code bash> | + | |
| - | git show < | + | |
| - | </ | + | |
| - | + | ||
| - | * Voir les modifications effectuées | + | |
| - | <code bash> | + | |
| - | # Modifications des fichiers du répertoire de travail | + | |
| - | git diff | + | |
| - | # Modification des fichiers de la zone de transit | + | |
| - | git diff --staged | + | |
| - | git diff --cached | + | |
| - | # Vérification des erreurs de caractères blancs | + | |
| - | git diff --check | + | |
| - | + | ||
| - | # Modification entre deux branches | + | |
| - | git diff < | + | |
| - | # Modification entre deux branches (nom et statut) | + | |
| - | git diff --name-status < | + | |
| - | # Modification entre deux branches (nom seulement) | + | |
| - | git diff --name-only < | + | |
| - | </ | + | |
| - | + | ||
| - | * Mettre de côté des modifications ([[http:// | + | |
| - | <code bash> | + | |
| - | # Mettre de côté toutes les modifications | + | |
| - | git stash | + | |
| - | # Mettre de côté toutes les modifications à l' | + | |
| - | git stash --keep-index | + | |
| - | # Lister les réserves de code | + | |
| - | git stash list | + | |
| - | # Appliquer la dernière réserve de code | + | |
| - | git stash apply | + | |
| - | # Supprimer la dernière réserve de code | + | |
| - | git stash drop | + | |
| - | # Afficher les modifications contenues dans le " | + | |
| - | git stash show -p stash@{0} | + | |
| - | </ | + | |
| - | + | ||
| - | * Afficher la liste des fichiers d'un commit | + | |
| - | <code bash> | + | |
| - | git diff-tree --no-commit-id --name-only -r < | + | |
| - | </ | + | |
| - | + | ||
| - | * Dupliquer un projet | + | |
| - | <code bash> | + | |
| - | # Duplique un projet dans un répertoire éponyme créé automatiquement | + | |
| - | git clone < | + | |
| - | + | ||
| - | # Duplique un projet dans un répertoire sélectionné | + | |
| - | git clone < | + | |
| - | </ | + | |
| - | + | ||
| - | * Créer une archive d'un projet | + | |
| - | <code bash> | + | |
| - | git archive --format=tar.gz < | + | |
| - | </ | + | |
| - | + | ||
| - | * Dupliquer un repository (([[https://help.github.com/ | + | |
| - | <code bash> | + | |
| - | # Faire un clone brut du projet | + | |
| - | git clone --bare < | + | |
| - | + | ||
| - | # Faire un miroir du projet | + | |
| - | cd old-repository | + | |
| - | git push --mirror < | + | |
| - | + | ||
| - | # Suppression du clone brut | + | |
| - | cd - | + | |
| - | rm -rf old-repository | + | |
| - | </ | + | |
| - | + | ||
| - | * Afficher la liste des branches actives | + | |
| - | <code bash> | + | |
| - | # Sans filtre | + | |
| - | git ls-remote --heads origin | + | |
| - | + | ||
| - | # Avec un filtre simple | + | |
| - | git ls-remote --heads origin master | + | |
| - | + | ||
| - | # Avec un filtre complexe | + | |
| - | git ls-remote --heads origin master develop release\* | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Pour aller plus loin ===== | + | |
| - | Il existe de nombreux outils fournis avec git. L' | + | |
| - | <code bash> | + | |
| - | # Afficher la liste et l' | + | |
| - | git help | + | |
| - | + | ||
| - | # Afficher la liste et l' | + | |
| - | git help --all | + | |
| - | + | ||
| - | # Afficher la liste des guides | + | |
| - | git help --guides | + | |
| - | + | ||
| - | # Afficher l'aide d'une commande ou un guide | + | |
| - | git help < | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Liens utiles ===== | + | |
| - | + | ||
| - | ==== Aide mémoire ==== | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | + | ||
| - | ==== Pour commencer ==== | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[https:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | + | ||
| - | ==== Pour aller plus loin ==== | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[https:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[http:// | + | |
| - | - [[https://dev.ghost.org/easy-git-pr-test/ | + | |
| - | - [[https:// | + | |
| - | - [[http:// | + | |
| - | - [[https:// | + | |
| - | - [[https:// | + | |
| - | + | ||
| - | ==== Humour ==== | + | |
| - | - sur [[http:// | + | |
| - | - sur [[http:// | + | |
| - | - sur [[http:// | + | |
| - | - [[https:// | + | |
| - | | + | |
| - | + | ||
| - | ===== Divers ===== | + | |
| - | + | ||
| - | FIXME → Vérifier ce que j'ai fait à la maison | + | |
| - | + | ||
| - | * Modifier son prompt pour qu'il soit plus utile | + | |
| - | <code bash> | + | |
| - | export GIT_PS1_SHOWDIRTYSTATE=1 | + | |
| - | export GIT_PS1_SHOWSTASHSTATE=1 | + | |
| - | export GIT_PS1_SHOWUNTRACKEDFILES=1 | + | |
| - | export GIT_PS1_SHOWUPSTREAM=verbose | + | |
| - | export GIT_PS1_DESCRIBE_STYLE=branch | + | |
| - | export GIT_PS1_SHOWCOLORHINTS=1 | + | |
| - | export PROMPT_COMMAND=' | + | |
| - | </code> | + | |
informatique/git.1538051304.txt.gz · Dernière modification : de alexis
