git clone
=== Clone branche particulière ===
git clone -b
=== Clone à partir d'un tag ===
git clone -b
=== Cloner uniquement un répertoire à partir d'un tag ===
git clone -b --filter=blob:none --sparse
cd
git sparse-checkout add "répertoire"
==== git checkout ====
Permet de se positionner sur une branche ou sur un tag.
git checkout
git checkout -- # Pour récupérer une version spécifique d'un fichier à partir d'un commit particulier
git checkout HEAD -- # Pour revenir à la dernière version d'un fichier
git checkout HEAD~1 -- # Pour revenir à la version précédente d'un fichier
git checkout -- # Pour récupérer la version d'un fichier depuis une branche spécifique
git restore # pour annuler les modifications
git add
==== git restore ====
Efface les modifications faites sur un fichier
git restore
==== git rm ====
Supprime un (ou des) fichier(s).
git rm
==== git mv ====
Renome un (ou des) fichier(s). On doit rester sur le même repository.
git mv
==== git reset HEAD ====
Supprime un fichier de la liste des fichiers à commiter
git reset HEAD
==== git status ====
Liste l'état des fichiers.
==== git commit ====
Prise en compte de fichiers.
git commit -m "commentaire"
Possibilité de prendre en compte tous les fichiers avec l'option -a (all)
git commit -am "commentaire"
==== git push ====
Remonte les modifications sur le serveur.
==== git log ====
Lister l'historique des commits
git log []
git log -p # liste les commits avec les modifications
git log --graph --oneline # affiche la liste des commits sur une ligne
git log --pretty=oneline [] # idem
git log --since="2025-07-01" --until="2025-07-31" # commits entre 2 dates
git log ... # commits entre 2 tags
git log --author="Paul Bismuth" # commits d'une personne donné
git log --grep="texte" -i # commits contenant un texte spécifique (-i pour ignore case)
git log -- chemin/vers/fichier.txt # commits affectant un fichier spécifique
git log --decorate --oneline # pour voir l'historique des commits et la pose des tags
git log --name-status # pour avoir les fichiers concernés (A : Added M : Modified D : Deleted R : Renamed C : Copied)
git log --date=iso --pretty=format:"%H|%an|%ad|%s" # format personnalisé
=== Format personnalisé ===
%H : Hash complet du commit
%h : Hash abrégé du commit
%T : Hash complet de l'arbre
%t : Hash abrégé de l'arbre
%P : Hashes des parents
%p : Hashes abrégés des parents
%an : Nom de l'auteur
%ae : Email de l'auteur
%ad : Date de l'auteur (respecte le format --date=)
%ar : Date relative de l'auteur (ex: "il y a 2 jours")
%ai : Date de l'auteur au format ISO 8601
%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 ===
git diff # pour voir les évolutions par rapport au dernier commit
git diff # pour voir les évolutions par rapport à un commit donné
=== Graphiquement ===
git difftool HEAD~1 # différence par rapport à la version précédente
git difftool # différence entre 2 commits du fichier
git difftool master # Pour comparer avec la branche master
git difftool # Pour voir tous les changements non commités
git difftool : : # pour comparer un fichier entre 2 tags
==== gitk ====
Permet de lancer une interface graphique
gitk
----
===== Merge =====
==== Merge d'un fichier ====
Exemple merge du fichier .gitlab-ci.yaml depuis la branche migration_engine vers la branche develop
git branch -a # pour vérifier le nom complet de la branche
git pull origin develop # pour mettre à jour le repo avec la branche develop
git checkout -- # on récupère la version du fichier depuis la branche souhaitée
git add # optionnel si le fichier n'existait pas dans la branche develop
git commit -m "Merge du fichier "
git push origin develop
----
===== Gestion droits unix =====
==== Interrogation ====
git ls-files --stage
* 100644 : fichier classique
* 100755 : fichier avec les droits d'exécution (+x)
* 040000 : répertoire
* 120000 : lien symbolique
==== Modification ====
=== Rendre un fichier exécutable ===
chmod +x
git update-index --chmod=+x
=== Rendre un fichier non exécutable ===
git update-index --chmod=-x
git add --chmod=+x
==== Dépannage ====
En cas de problème essayer de retirer puis de remettre les droits :
git update-index --chmod=-x
git update-index --chmod=+x
----
===== Gestion tag =====
==== Interrogation ====
=== Lister tous les tags ===
git tag -n
git tag -n --sort=refname # dans l'ordre des noms de tag (par défaut)
git tag -n --sort=committerdate # dans l'ordre chronologique
=== Lister les tags suivant un patern ===
git tag -l "v1.4.*"
=== Interroger le contenu d'un tag ===
git show v1.4.5
git show --pretty= --name-only v1.4.5
==== Positionnement ====
=== Choisir quel commit tagger ===
git log
git log --author "MEYLHOC Olivier" # pour ne voir que les commit d'une personne
=== Poser un tag localement et le remonter sur le serveur ===
git tag -a
git push origin
=== Déplacer un tag localement et le remonter sur le serveur ===
git tag -f
git push origin --force
==== Effacer ====
* Effacer un tag localement
git tag -d
* Effacer un tag sur le serveur
git push origin --delete
==== Checkout ====
Il est possible de voir les versions de fichier correspondant à un tag en faisant un checkout à partir de celui-ci :
git checkout
git checkout -b
----