all:bibles:applications:git:bash
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 | ||
| all:bibles:applications:git:bash [2025/04/02 09:42] – [git diff] omeylhoc | all:bibles:applications:git:bash [2025/12/03 15:12] (Version actuelle) – [Merge d'un fichier] omeylhoc | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Git Bash ====== | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Commandes ===== | ||
| + | |||
| + | ==== git clone ==== | ||
| + | |||
| + | Clone le serveur dans le répertoire courant. | ||
| + | |||
| + | <note tip>Pour obtenir le lien aller sur l' | ||
| + | |||
| + | === Clone branche principale === | ||
| + | |||
| + | <code bash> | ||
| + | git clone < | ||
| + | </ | ||
| + | |||
| + | === Clone branche particulière === | ||
| + | |||
| + | <code bash> | ||
| + | git clone -b <nom de la branche> < | ||
| + | </ | ||
| + | |||
| + | === Clone à partir d'un tag === | ||
| + | |||
| + | <code bash> | ||
| + | git clone -b <tag> < | ||
| + | </ | ||
| + | |||
| + | === Cloner uniquement un répertoire à partir d'un tag === | ||
| + | |||
| + | <code bash> | ||
| + | git clone -b <tag> --filter=blob: | ||
| + | cd < | ||
| + | git sparse-checkout add " | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== git checkout ==== | ||
| + | |||
| + | Permet de se positionner sur une branche ou sur un tag. | ||
| + | |||
| + | <code bash> | ||
| + | git checkout < | ||
| + | git checkout <commit hash> -- < | ||
| + | git checkout HEAD -- < | ||
| + | git checkout HEAD~1 -- < | ||
| + | git checkout < | ||
| + | git restore < | ||
| + | </ | ||
| + | |||
| + | <note important> | ||
| + | |||
| + | ==== git pull ==== | ||
| + | |||
| + | Met à jour la copie locale à partir du serveur. | ||
| + | |||
| + | ==== git add ==== | ||
| + | |||
| + | Ajoute un (ou des) fichier(s) au projet. | ||
| + | |||
| + | <code bash> | ||
| + | git add <liste fichiers> | ||
| + | </ | ||
| + | |||
| + | ==== git restore ==== | ||
| + | |||
| + | Efface les modifications faites sur un fichier | ||
| + | |||
| + | <code bash> | ||
| + | git restore < | ||
| + | </ | ||
| + | |||
| + | ==== git rm ==== | ||
| + | |||
| + | Supprime un (ou des) fichier(s). | ||
| + | |||
| + | <code bash> | ||
| + | git rm < | ||
| + | </ | ||
| + | |||
| + | ==== git mv ==== | ||
| + | |||
| + | Renome un (ou des) fichier(s). On doit rester sur le même repository. | ||
| + | |||
| + | <code bash> | ||
| + | git mv < | ||
| + | </ | ||
| + | |||
| + | ==== git reset HEAD ==== | ||
| + | |||
| + | Supprime un fichier de la liste des fichiers à commiter | ||
| + | |||
| + | <code bash> | ||
| + | git reset HEAD < | ||
| + | </ | ||
| + | |||
| + | ==== git status ==== | ||
| + | |||
| + | Liste l' | ||
| + | |||
| + | ==== git commit ==== | ||
| + | |||
| + | Prise en compte de fichiers. | ||
| + | |||
| + | <code bash> | ||
| + | git commit -m " | ||
| + | </ | ||
| + | |||
| + | Possibilité de prendre en compte tous les fichiers avec l' | ||
| + | |||
| + | <code bash> | ||
| + | git commit -am " | ||
| + | </ | ||
| + | |||
| + | ==== git push ==== | ||
| + | |||
| + | Remonte les modifications sur le serveur. | ||
| + | |||
| + | ==== git log ==== | ||
| + | |||
| + | Lister l' | ||
| + | |||
| + | <code bash> | ||
| + | git log [< | ||
| + | git log -p < | ||
| + | git log --graph --oneline | ||
| + | git log --pretty=oneline [< | ||
| + | git log --since=" | ||
| + | git log < | ||
| + | git log --author=" | ||
| + | git log --grep=" | ||
| + | git log -- chemin/ | ||
| + | git log --decorate --oneline | ||
| + | git log --name-status | ||
| + | git log --date=iso --pretty=format:" | ||
| + | </ | ||
| + | |||
| + | === Format personnalisé === | ||
| + | |||
| + | < | ||
| + | %H : Hash complet du commit | ||
| + | %h : Hash abrégé du commit | ||
| + | %T : Hash complet de l' | ||
| + | %t : Hash abrégé de l' | ||
| + | %P : Hashes des parents | ||
| + | %p : Hashes abrégés des parents | ||
| + | %an : Nom de l' | ||
| + | %ae : Email de l' | ||
| + | %ad : Date de l' | ||
| + | %ar : Date relative de l' | ||
| + | %ai : Date de l' | ||
| + | %cn : Nom du committer | ||
| + | %ce : Email du committer | ||
| + | %cd : Date du commit (respecte le format --date=) | ||
| + | %cr : Date relative du commit | ||
| + | %ci : Date du commit au format ISO 8601 | ||
| + | %d : Références (branches, tags) | ||
| + | %D : Références sans les "() " autour | ||
| + | %s : Sujet du commit (première ligne du message) | ||
| + | %f : Sujet formaté sous forme de nom de fichier | ||
| + | %b : Corps du message de commit | ||
| + | %B : Message de commit complet (sujet + corps) | ||
| + | %N : Notes du commit | ||
| + | %GG : Signature GPG | ||
| + | %G? : Statut de vérification de la signature GPG | ||
| + | %GS : Signature GPG | ||
| + | %GK : Clé de signature GPG | ||
| + | </ | ||
| + | |||
| + | ==== git diff ==== | ||
| + | |||
| + | * Lister la liste des commits avec la commande **git log** ci-dessus | ||
| + | |||
| + | === Console === | ||
| + | |||
| + | <code bash> | ||
| + | git diff < | ||
| + | git diff <commit hash> < | ||
| + | </ | ||
| + | |||
| + | === Graphiquement === | ||
| + | |||
| + | <code bash> | ||
| + | git difftool HEAD~1 < | ||
| + | git difftool < | ||
| + | git difftool master < | ||
| + | git difftool | ||
| + | git difftool < | ||
| + | </ | ||
| + | |||
| + | ==== gitk ==== | ||
| + | |||
| + | Permet de lancer une interface graphique | ||
| + | |||
| + | <code bash> | ||
| + | gitk < | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Merge ===== | ||
| + | |||
| + | ==== Merge d'un fichier ==== | ||
| + | |||
| + | Exemple merge du fichier .gitlab-ci.yaml depuis la branche migration_engine vers la branche develop | ||
| + | |||
| + | <code bash> | ||
| + | git branch -a # pour vérifier le nom complet de la branche | ||
| + | git pull origin develop | ||
| + | git checkout < | ||
| + | git add < | ||
| + | git commit -m "Merge du fichier < | ||
| + | git push origin develop | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Gestion droits unix ===== | ||
| + | |||
| + | ==== Interrogation ==== | ||
| + | |||
| + | <code bash> | ||
| + | git ls-files --stage | ||
| + | </ | ||
| + | |||
| + | * 100644 : fichier classique | ||
| + | * 100755 : fichier avec les droits d' | ||
| + | * 040000 : répertoire | ||
| + | * 120000 : lien symbolique | ||
| + | |||
| + | ==== Modification ==== | ||
| + | |||
| + | === Rendre un fichier exécutable === | ||
| + | |||
| + | <code bash> | ||
| + | chmod +x < | ||
| + | git update-index --chmod=+x < | ||
| + | </ | ||
| + | |||
| + | === Rendre un fichier non exécutable === | ||
| + | |||
| + | <code bash> | ||
| + | git update-index --chmod=-x < | ||
| + | </ | ||
| + | |||
| + | <note important> | ||
| + | |||
| + | ==== Création d'un fichier exécutable ==== | ||
| + | |||
| + | A partir de Git 2.9 il est possible de créer un fichier directement comme exécutable : | ||
| + | |||
| + | <code bash> | ||
| + | git add --chmod=+x < | ||
| + | </ | ||
| + | |||
| + | ==== Dépannage ==== | ||
| + | |||
| + | En cas de problème essayer de retirer puis de remettre les droits : | ||
| + | |||
| + | <code bash> | ||
| + | git update-index --chmod=-x < | ||
| + | git update-index --chmod=+x < | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Gestion tag ===== | ||
| + | |||
| + | ==== Interrogation ==== | ||
| + | |||
| + | === Lister tous les tags === | ||
| + | |||
| + | <code bash> | ||
| + | git tag -n | ||
| + | git tag -n --sort=refname | ||
| + | git tag -n --sort=committerdate | ||
| + | </ | ||
| + | |||
| + | === Lister les tags suivant un patern === | ||
| + | |||
| + | <code bash> | ||
| + | git tag -l " | ||
| + | </ | ||
| + | |||
| + | === Interroger le contenu d'un tag === | ||
| + | |||
| + | <code bash> | ||
| + | git show v1.4.5 | ||
| + | git show --pretty= --name-only v1.4.5 | ||
| + | </ | ||
| + | |||
| + | ==== Positionnement ==== | ||
| + | |||
| + | === Choisir quel commit tagger === | ||
| + | |||
| + | <code bash> | ||
| + | git log | ||
| + | git log --author " | ||
| + | </ | ||
| + | |||
| + | === Poser un tag localement et le remonter sur le serveur === | ||
| + | |||
| + | <code bash> | ||
| + | git tag -a <tag> < | ||
| + | git push origin <tag> | ||
| + | </ | ||
| + | |||
| + | === Déplacer un tag localement et le remonter sur le serveur === | ||
| + | |||
| + | <code bash> | ||
| + | git tag -f <tag> < | ||
| + | git push origin <tag> --force | ||
| + | </ | ||
| + | |||
| + | ==== Effacer ==== | ||
| + | |||
| + | * Effacer un tag localement | ||
| + | |||
| + | <code bash> | ||
| + | git tag -d <tag> | ||
| + | </ | ||
| + | |||
| + | * Effacer un tag sur le serveur | ||
| + | |||
| + | <code bash> | ||
| + | git push origin --delete <tag> | ||
| + | </ | ||
| + | |||
| + | ==== Checkout ==== | ||
| + | |||
| + | Il est possible de voir les versions de fichier correspondant à un tag en faisant un checkout à partir de celui-ci : | ||
| + | |||
| + | <code bash> | ||
| + | git checkout <tag> | ||
| + | </ | ||
| + | |||
| + | <note warning> | ||
| + | |||
| + | Pour faire des modifications il est préférable de créer une nouvelle branche à partir du tag : | ||
| + | |||
| + | <code bash> | ||
| + | git checkout -b < | ||
| + | </ | ||
| + | |||
| + | ---- | ||
