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 05:46] – [Liens utiles] alexis | informatique:git [2024/12/03 07:24] (Version actuelle) – alexis | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
====== Git ====== | ====== Git ====== | ||
+ | <catlist informatique: | ||
<WRAP todo> | <WRAP todo> | ||
<code bash> | <code bash> | ||
Ligne 11: | Ligne 13: | ||
* Ajouter une section sur les préférences de l' | * Ajouter une section sur les préférences de l' | ||
</ | </ | ||
- | |||
- | ===== 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 --global --unset user.name | ||
- | </ | ||
- | </ | ||
- | |||
- | <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 Prompt personnalisé> | ||
- | <WRAP todo> | ||
- | Vérifier ce que j'ai fait à la maison | ||
- | </ | ||
- | <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=' | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | ===== 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:// | ||
- | - [[https:// | ||
- | <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:// | ||
- | </ | ||
- | |||
- |
informatique/git.1605793596.txt.gz · Dernière modification : 2020/11/19 05:46 de alexis