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édenteDernière révisionLes deux révisions suivantes | ||
informatique:git [2018/09/27 05:37] – [Des alias pour gagner du temps] alexis | informatique:git [2023/07/07 03:26] – [Pour aller plus loin] alexis | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Git ====== | ====== Git ====== | ||
- | + | <WRAP todo> | |
- | FIXME → Séparer | + | <code bash> |
+ | # Ajouter un dépôt distant | ||
+ | git remote add <nom> < | ||
+ | </ | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * Vérifier ce que j'ai fait à la maison | ||
+ | * Ajouter une section sur les préférences de l' | ||
+ | </ | ||
===== Configuration ===== | ===== Configuration ===== | ||
Il est possible de modifier les préférences en utilisant soit git directement soit en modifiant son fichier de 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> | + | <tabbox |
- | ==== En ligne de commande | + | |
<code bash> | <code bash> | ||
git config --global user.name "Nom et prénom de l' | git config --global user.name "Nom et prénom de l' | ||
- | |||
git config --global user.email " | git config --global user.email " | ||
- | |||
git config --global color.ui " | git config --global color.ui " | ||
- | |||
git config --global core.editor vim # Choix de l' | git config --global core.editor vim # Choix de l' | ||
- | |||
git config --global help.autocorrect 1 # Auto-correction des commandes | 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 core.autocrlf false # Non conversion du caractère de fin de ligne | ||
- | |||
git config --global commit.template < | git config --global commit.template < | ||
- | |||
git config --global alias.st ' | git config --global alias.st ' | ||
+ | git config --global push.autoSetupRemote true # Création automatique de la branche distante au moment du partage (commande " | ||
</ | </ | ||
Ligne 37: | Ligne 39: | ||
* Avec '' | * Avec '' | ||
* Avec '' | * Avec '' | ||
- | </ | ||
</ | </ | ||
- | <WRAP half column> | + | <tabbox |
- | ==== Avec un fichier de configuration | + | |
Le fichier a modifier est le fichier // | Le fichier a modifier est le fichier // | ||
<code ini> | <code ini> | ||
Ligne 58: | Ligne 58: | ||
[commit] | [commit] | ||
template = < | template = < | ||
+ | [push] | ||
+ | autoSetupRemote = true | ||
</ | </ | ||
<WRAP alert> | <WRAP alert> | ||
Ligne 67: | Ligne 69: | ||
* En modifiant le fichier ''/ | * En modifiant le fichier ''/ | ||
* En modifiant le fichier '' | * En modifiant le fichier '' | ||
- | </ | ||
- | </ | ||
</ | </ | ||
Ligne 81: | Ligne 81: | ||
</ | </ | ||
- | ==== 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. | 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' | Voici les alias que j' | ||
Ligne 93: | Ligne 93: | ||
check = diff --check HEAD | check = diff --check HEAD | ||
; Fixup a commit into another | ; Fixup a commit into another | ||
- | fixup = !sh -c 'git stash --keep-index && SHA=$(git rev-parse $1) && git commit --fixup $SHA && GIT_SEQUENCE_EDITOR=: | + | fixup = !sh -c 'git stash --keep-index && SHA=$(git rev-parse $1) && git commit --fixup $SHA && GIT_SEQUENCE_EDITOR=: |
- | ; Retrieve a PR locally | + | ; Show file names in commits |
- | | + | list-file = !sh -c 'git diff-tree --no-commit-id --name-only -r ${1: |
+ | ; Show branches ordered by last working time | ||
+ | last-work = branch --sort=' | ||
+ | ; Retrieve a MR locally | ||
+ | | ||
; Show log on oneline | ; Show log on oneline | ||
oneline = log --oneline --abbrev-commit --graph | oneline = log --oneline --abbrev-commit --graph | ||
+ | ; Retrieve a PR locally (github) | ||
+ | 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 | ||
+ | ; Remove local MRs (gitlab) | ||
+ | rmmr = !git checkout master && git branch --list ' | ||
+ | ; Show synchronized branches without remote | ||
+ | stale-branch = !git fetch --all --prune && git branch --verbose | awk '/ | ||
</ | </ | ||
<WRAP info> | <WRAP info> | ||
- | La commande '':'' | + | La commande '':'' |
+ | </ | ||
+ | <WRAP alert> | ||
+ | Attention, la version de //sed// disponible sur MacOS ne supporte pas l' | ||
+ | Il faut la remplacer par l' | ||
</ | </ | ||
- | + | <tabbox Prompt personnalisé> | |
- | FIXME Ajouter une section sur les préférences de l'utilisateur par dépot | + | <WRAP todo> |
+ | Vérifier ce que j'ai fait à la maison | ||
+ | </ | ||
<code bash> | <code bash> | ||
- | # Ajouter un dépôt distant | + | export GIT_PS1_SHOWDIRTYSTATE=1 |
- | git remote add <nom> <url> | + | 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 ===== | ===== Utilisation ===== | ||
+ | <tabbox Aide> | ||
+ | Il existe de nombreux outils fournis avec git. L' | ||
+ | <code bash> | ||
+ | # Afficher la liste et l' | ||
+ | git help | ||
- | ==== Utiliser les logs ==== | + | # 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' | L' | ||
<code bash> | <code bash> | ||
- | # Afficher | + | # Afficher |
git log | git log | ||
- | # Afficher | + | # Afficher |
git log --stat | git log --stat | ||
- | # Afficher | + | # Afficher |
git log -n | git log -n | ||
- | # Afficher | + | # Afficher |
git log --oneline | git log --oneline | ||
- | # Afficher | + | # Afficher |
git log < | git log < | ||
Ligne 132: | Ligne 172: | ||
git log --pretty=oneline --abbrev-commit --graph --decorate | git log --pretty=oneline --abbrev-commit --graph --decorate | ||
- | # Afficher la liste des tags par date | + | # Afficher la liste des étiquettes |
git log --date-order --graph --tags --simplify-by-decoration --pretty=format:' | git log --date-order --graph --tags --simplify-by-decoration --pretty=format:' | ||
</ | </ | ||
- | ==== Utiliser les commits ==== | + | <tabbox Révisions> |
* Révisionner du code | * Révisionner du code | ||
<code bash> | <code bash> | ||
# Ajouter les fichiers à révisionner | # Ajouter les fichiers à révisionner | ||
git add < | git add < | ||
- | # Révisionner les modifications | + | |
+ | # Révisionner les modifications | ||
git commit | git commit | ||
- | # À ce moment, | + | # Révisionner les modifications en saisissant un titre uniquement sans ouvrir |
+ | git commit -m < | ||
+ | # Révisionner les modifications en saisissant | ||
+ | git commit -m < | ||
- | # Il est aussi possible de faire tout ça automatiquement | + | # Il est aussi possible de faire tout ça automatiquement |
- | git commit -a -m < | + | git commit -a -m < |
</ | </ | ||
Ligne 199: | Ligne 243: | ||
* [[http:// | * [[http:// | ||
* [[https:// | * [[https:// | ||
- | + | <tabbox Branches> | |
- | ==== Utiliser les branches ==== | + | |
* Afficher les branches | * Afficher les branches | ||
<code bash> | <code bash> | ||
Ligne 305: | Ligne 348: | ||
- [[https:// | - [[https:// | ||
- [[https:// | - [[https:// | ||
- | ==== Utiliser les tags ==== | + | <tabbox Étiquettes> |
- | * Lister les tags | + | * Lister les étiquettes |
<code bash> | <code bash> | ||
git tag | git tag | ||
</ | </ | ||
- | * Créer | + | * Créer |
<code bash> | <code bash> | ||
git tag < | git tag < | ||
</ | </ | ||
- | * Créer | + | * Créer |
<code bash> | <code bash> | ||
git tag -a < | git tag -a < | ||
</ | </ | ||
- | * Créer | + | * Créer |
- | Il faut que le tag existe déjà localement pour pouvoir | + | Il faut que l' |
<code bash> | <code bash> | ||
- | # Pour créer | + | # Pour créer |
git push origin < | git push origin < | ||
- | # Pour créer | + | # Pour créer |
git push --tags | git push --tags | ||
</ | </ | ||
- | * Supprimer | + | * Supprimer |
<code bash> | <code bash> | ||
# La manière compréhensible | # La manière compréhensible | ||
Ligne 340: | Ligne 383: | ||
</ | </ | ||
- | * Remplacer | + | * Remplacer |
<code bash> | <code bash> | ||
- | # Récupérer le code associé | + | # Récupérer le code associé |
git checkout < | git checkout < | ||
- | # Supprimer | + | # Supprimer |
git tag -d < | git tag -d < | ||
- | # Créer | + | # Créer |
GIT_COMMITTER_DATE=" | GIT_COMMITTER_DATE=" | ||
- | # Supprimer | + | # Supprimer |
git push origin : | git push origin : | ||
- | # Créer | + | # Créer |
git push --tags | git push --tags | ||
</ | </ | ||
- | ==== Utiliser les notes ==== | + | <tabbox Notes> |
- | + | * Ajouter une note sur un révision | |
- | * Ajouter une note sur un commit | + | |
<code bash> | <code bash> | ||
# Sans espace de nom | # Sans espace de nom | ||
Ligne 389: | Ligne 431: | ||
- [[http:// | - [[http:// | ||
- [[http:// | - [[http:// | ||
- | + | < | |
- | ==== Divers | + | |
* Créer et appliquer un patch (([[https:// | * Créer et appliquer un patch (([[https:// | ||
<code bash> | <code bash> | ||
Ligne 446: | Ligne 487: | ||
git diff --name-only < | git diff --name-only < | ||
</ | </ | ||
+ | <WRAP tip> | ||
+ | Il est possible de filtrer les résultats sur le type de changement en utilisant '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | </ | ||
+ | |||
* Mettre de côté des modifications ([[http:// | * Mettre de côté des modifications ([[http:// | ||
Ligne 463: | Ligne 512: | ||
</ | </ | ||
- | * Afficher la liste des fichiers d'un commit | + | * Afficher la liste des fichiers d'une révision |
<code bash> | <code bash> | ||
git diff-tree --no-commit-id --name-only -r < | git diff-tree --no-commit-id --name-only -r < | ||
Ligne 482: | Ligne 531: | ||
</ | </ | ||
- | * Dupliquer un repository | + | * Dupliquer un dépôt |
<code bash> | <code bash> | ||
# Faire un clone brut du projet | # Faire un clone brut du projet | ||
Ligne 508: | Ligne 557: | ||
</ | </ | ||
- | ===== Pour aller plus loin ===== | + | * Afficher |
- | Il existe de nombreux outils fournis avec git. L' | + | |
<code bash> | <code bash> | ||
- | # Afficher la liste et l' | + | git ls-tree -r master --name-only |
- | git help | + | </ |
+ | </ | ||
- | # Afficher la liste et l'usage de l'ensemble des commandes | + | ===== Variables d' |
- | git help --all | + | * **GIT_SEQUENCE_EDITOR** : Cette variable surcharge |
- | + | * **GIT_TERMINAL_PROMPT** (([[https:// | |
- | # Afficher la liste des guides | + | <code bash> |
- | git help --guides | + | # La commande suivante va s' |
- | + | GIT_TERMINAL_PROMPT=0 | |
- | # Afficher | + | |
- | git help < | + | |
</ | </ | ||
===== Liens utiles ===== | ===== Liens utiles ===== | ||
- | + | < | |
- | ==== Aide mémoire | + | |
- [[http:// | - [[http:// | ||
- [[http:// | - [[http:// | ||
- [[http:// | - [[http:// | ||
- [[http:// | - [[http:// | ||
- | + | - [[https:// | |
- | ==== Pour commencer | + | < |
- [[http:// | - [[http:// | ||
- [[http:// | - [[http:// | ||
Ligne 542: | Ligne 588: | ||
- [[http:// | - [[http:// | ||
- [[http:// | - [[http:// | ||
- | + | - [[https:// | |
- | ==== Pour aller plus loin ==== | + | - [[https:// |
+ | < | ||
- [[http:// | - [[http:// | ||
- [[http:// | - [[http:// | ||
Ligne 567: | Ligne 614: | ||
- [[https:// | - [[https:// | ||
- [[https:// | - [[https:// | ||
+ | - [[https:// | ||
+ | - [[https:// | ||
+ | - [[https:// | ||
+ | - [Et merde, Git!? | ||
- | ==== Humour | + | |
+ | |||
+ | < | ||
- sur [[http:// | - sur [[http:// | ||
- sur [[http:// | - sur [[http:// | ||
Ligne 574: | Ligne 627: | ||
- [[https:// | - [[https:// | ||
- sur [[http:// | - 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=' | ||
- | </ | ||
informatique/git.txt · Dernière modification : 2024/02/09 05:47 de alexis