====== Git Bash ====== ---- ===== Commandes ===== ==== git clone ==== Clone le serveur dans le répertoire courant. Pour obtenir le lien aller sur l'interface web et cliquer en haut à droite sur le bouton clone puis copier le lien « clone with ssh ». === Clone branche principale === 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 Attention de sauvegarder d'éventuelles modifications avant de lancer la commande ! ==== git pull ==== Met à jour la copie locale à partir du serveur. ==== git add ==== Ajoute un (ou des) fichier(s) au projet. 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 Ne fonctionne que depuis un vrai système linux, pas à partir de Git bash ==== 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 : 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 Eviter de faire des modifications à partir de cet état « detached HEAD ». Pour faire des modifications il est préférable de créer une nouvelle branche à partir du tag : git checkout -b ----