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 [2020/11/19 02:34] – [Pour aller plus loin] alexis | informatique:git [2024/12/03 07:24] (Version actuelle) – alexis | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| ====== Git ====== | ====== Git ====== | ||
| - | + | <catlist informatique:git -sortByTitle | |
| - | ===== Configuration ===== | + | |
| - | Il est possible de modifier les préférences en utilisant soit git directement soit en modifiant son fichier de configuration. | + | |
| - | + | ||
| - | <tabbox 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 | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | <WRAP tip> | + | |
| - | En utilisant '' | + | |
| - | * Avec '' | + | |
| - | * Avec '' | + | |
| - | </ | + | |
| - | + | ||
| - | <tabbox 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. | + | |
| - | </ | + | |
| - | + | ||
| - | <tabbox 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 stash --keep-index && SHA=$(git rev-parse $1) && git commit --fixup $SHA && GIT_SEQUENCE_EDITOR=: | + | |
| - | ; Show branch ordered by last working time | + | |
| - | last-work = branch --sort=' | + | |
| - | ; Show log on oneline | + | |
| - | oneline = log --oneline --abbrev-commit --graph | + | |
| - | ; Retrieve a PR locally | + | |
| - | pr = !sh -c 'git fetch ${2: | + | |
| - | ; Prune local tags that don't exist on remote | + | |
| - | pt = !git tag -l | xargs git tag -d && git fetch -t | + | |
| - | </ | + | |
| - | <WRAP info> | + | |
| - | La commande '':'', | + | |
| - | </ | + | |
| - | + | ||
| - | </tabbox> | + | |
| <WRAP todo> | <WRAP todo> | ||
| - | 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 ===== | ||
| - | <tabbox Aide> | ||
| - | 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 < | ||
| - | </ | ||
| - | <tabbox Journal d' | ||
| - | L' | ||
| - | <code bash> | ||
| - | # Afficher le journal d' | ||
| - | git log | ||
| - | |||
| - | # Afficher le journal d' | ||
| - | git log --stat | ||
| - | |||
| - | # Afficher le journal d' | ||
| - | git log -n | ||
| - | |||
| - | # Afficher le journal d' | ||
| - | git log --oneline | ||
| - | |||
| - | # Afficher le journal d' | ||
| - | git log < | ||
| - | |||
| - | # Afficher l' | ||
| - | git log --pretty=oneline --abbrev-commit --graph --decorate | ||
| - | |||
| - | # Afficher la liste des étiquettes par date | ||
| - | git log --date-order --graph --tags --simplify-by-decoration --pretty=format:' | ||
| - | </ | ||
| - | <tabbox Révisions> | ||
| - | * 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:// | ||
| - | * [[https:// | ||
| - | <tabbox 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:// | ||
| - | - [[https:// | ||
| - | <tabbox Étiquettes> | ||
| - | * Lister les étiquettes | ||
| - | <code bash> | ||
| - | git tag | ||
| - | </ | ||
| - | |||
| - | * Créer une étiquette à usage privé ou temporaire (étiquette légère) | ||
| - | <code bash> | ||
| - | git tag < | ||
| - | </ | ||
| - | |||
| - | * Créer une étiquette à usage public (étiquette annotée) | ||
| - | <code bash> | ||
| - | git tag -a < | ||
| - | </ | ||
| - | |||
| - | * Créer une étiquette distante | ||
| - | Il faut que l' | ||
| - | <code bash> | ||
| - | # Pour créer une seul étiquette | ||
| - | git push origin < | ||
| - | # Pour créer toutes les étiquettes | ||
| - | git push --tags | ||
| - | </ | ||
| - | |||
| - | * Supprimer étiquette distante (([[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 étiquette légère par étiquette annotée (([[http:// | ||
| - | <code bash> | ||
| - | # Récupérer le code associé à l' | ||
| - | git checkout < | ||
| - | |||
| - | # Supprimer l' | ||
| - | git tag -d < | ||
| - | |||
| - | # Créer l' | ||
| - | GIT_COMMITTER_DATE=" | ||
| - | |||
| - | # Supprimer l' | ||
| - | git push origin : | ||
| - | |||
| - | # Créer l' | ||
| - | git push --tags | ||
| - | </ | ||
| - | <tabbox Notes> | ||
| - | * Ajouter une note sur un révision | ||
| - | <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:// | ||
| - | <tabbox 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'une révision | ||
| - | <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 dépçot (([[https:// | ||
| - | <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\* | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | |||
| - | ===== Liens utiles ===== | ||
| - | <tabbox Aide mémoire> | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | <tabbox Pour commencer> | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[https:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[https:// | ||
| - | - [[https:// | ||
| - | <tabbox Pour aller plus loin> | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[https:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[http:// | ||
| - | - [[https:// | ||
| - | - [[https:// | ||
| - | - [[http:// | ||
| - | - [[https:// | ||
| - | - [[https:// | ||
| - | <tabbox Humour> | ||
| - | - sur [[http:// | ||
| - | - sur [[http:// | ||
| - | - sur [[http:// | ||
| - | - [[https:// | ||
| - | - sur [[http:// | ||
| - | </ | ||
| - | |||
| - | ===== 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=' | ||
| - | </ | ||
| - | |||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| - | + | * Vérifier ce que j'ai fait à la maison pour la configuration du prompt | |
| + | * Ajouter une section sur les préférences de l' | ||
| + | </ | ||
informatique/git.1605782086.txt.gz · Dernière modification : de alexis
