🔧 Initialisation & Configuration

git init

Description : Initialise un nouveau repository Git.

Syntaxe : git init [<directory>] [options]

Voici un tableau rĂ©capitulatif clair et structurĂ© de la commande git init avec ses options principales et un exemple d’utilisation pour chacune :

OptionDescriptionExemple
Initialise un repository Git dans le dossier courant (avec working directory).git init
--bareInitialise un repository bare sans working directory (uniquement les données internes Git).git init --bare monrepo.git
--template=<répertoire>Utilise un répertoire de template personnalisé pour initialiser le dépÎt (hooks, etc.).git init --template=/chemin/templates
--separate-git-dir=<répertoire>Place le dossier .git ailleurs (hors du répertoire courant).git init --separate-git-dir=/chemin/.git
--shared[=valeur]DĂ©finit les permissions d’accĂšs au dĂ©pĂŽt (ex : privĂ©, groupe, public, code octal).git init --shared=group
-q, --quietMode silencieux, affiche uniquement les messages critiques ou erreurs.git init --quiet
-b <branche>, --initial-branch=<branche>Définit le nom de la branche initiale (ex : main ou master).git init --initial-branch=main
--object-format=<format>DĂ©finit le format d’objet Git (sha1 par dĂ©faut, sha256 si activĂ©).git init --object-format=sha256
--ref-format=<format>Définit le format des références Git (files ou reftable).git init --ref-format=reftable

Quelques précisions rapides :

  • -bare : utile pour crĂ©er un dĂ©pĂŽt central sans copie des fichiers, par exemple pour partager sur un serveur.
  • -template : permet d’ajouter des hooks personnalisĂ©s ou fichiers de config au moment de l’initialisation.
  • -shared : trĂšs utile sur un serveur ou dĂ©pĂŽt multi-utilisateurs pour gĂ©rer permissions (ex : group pour accĂšs en groupe).
  • -initial-branch : important pour nommer la branche principale, souvent main de nos jours au lieu de master.

Explications supplémentaires :

  • Repository bare : Pas de copie des fichiers sources, uniquement le dossier .git Ă  la racine. Utile comme dĂ©pĂŽt central.
  • Template : Permet d’ajouter des hooks ou fichiers par dĂ©faut Ă  la crĂ©ation.
  • Separate git dir : SĂ©pare les donnĂ©es Git du code pour organiser le stockage.
  • Shared : Pour contrĂŽler qui peut accĂ©der au repo.
  • Initial branch : Moderne permettant de nommer la branche initiale (ex : main au lieu de master).
  • Object and ref formats : Options avancĂ©es pour les mĂ©canismes Git internes.

Exemple minimal pour un repo normal :

git init

Exemple d’un repo bare pour serveur :

git init --bare projet.git

Exemple avec template personnalisé :

git init --template=/usr/share/git-core/templates/mytemplate

Exemple pour changer le nom de branche par défaut :

git init -b main
Link to original

git config

Description : Configure les paramÚtres Git.

Syntaxe : git config [<file-option>] [type] [--show-origin] [-z|--null] name [value] RĂ©fĂ©rence ComplĂšte des Sections et Variables de Configuration Git (git config) Voici un tableau rĂ©capitulatif de la commande git config avec ses options principales accompagnĂ©es d’exemples :

OptionDescriptionExemple
(sans option)Affiche la valeur d’une clĂ© spĂ©cifique, ou liste toute la configuration si aucune clĂ© spĂ©cifiĂ©egit config user.name
--globalApplique la configuration au niveau global (~/.gitconfig)git config --global user.email "user@example.com"
--systemApplique la configuration au niveau systĂšme (/etc/gitconfig ou fichier global)git config --system core.editor "vim"
--localApplique la configuration uniquement au dépÎt courant (fichier .git/config)git config --local color.ui true
--worktreeApplique la configuration au niveau du worktree (git 2.13+)git config --worktree user.name "Worktree User"
--file <fichier>Utilise un fichier de configuration spécifiquegit config --file=./custom.config alias.co checkout
--list / -lListe toutes les configurations chargéesgit config --list
--unset <clé>Supprime la configuration correspondantegit config --global --unset user.name
--unset-all <clé>Supprime toutes les entrées de la clégit config --global --unset-all alias.co
--add <clé> <valeur>Ajoute une nouvelle valeur pour une clégit config --global --add alias.lg "log --graph --oneline"
-e, --editOuvre le fichier de configuration dans l’éditeur par dĂ©fautgit config --global --edit
--replace-all <clé> <valeur>Remplace toutes les valeurs existantes avec celle fourniegit config --global --replace-all user.email "new@example.com"

Quelques exemples concrets

*# Configurer le nom d'utilisateur globalement*
git config --global user.name "John Doe"
 
*# Configurer l'email uniquement pour ce dépÎt*
git config --local user.email "john@example.com"
 
*# Voir toutes les configurations en cours*
git config --list
 
*# Ajouter un alias pour 'checkout'*
git config --global --add alias.co checkout
 
*# Supprimer une configuration globale*
git config --global --unset user.signingkey
 
*# Éditer la configuration globale dans l'Ă©diteur*
git config --global --edit

Cette commande est trĂšs puissante pour personnaliser Git, dĂ©finir des alias, les prĂ©fĂ©rences d’utilisateur, et plus encore. N’oublie pas d’utiliser git config --help pour afficher toutes les options et la documentation complĂšte.

Link to original

git clean

Description : Supprime les fichiers non trackés du working directory.

Syntaxe : git clean [<options>] [<path>...]

OptionDescriptionUtilisation principale
git clean -fForce la suppression des fichiers non trackésNettoyer le répertoire de travail
-dSupprime aussi les répertoires videsNettoyage complet
-n, --dry-runSimule sans supprimerVoir ce qui serait supprimé
-i, --interactiveMode interactifNettoyage sélectif
-xSupprime aussi les fichiers ignorésNettoyage total (build artifacts, etc.)
-XSupprime seulement les fichiers ignorésNettoyer les fichiers de build
Link to original

git gc

Description : Optimise le dépÎt Git (garbage collection).

Syntaxe : git gc [<options>]

OptionDescriptionUtilisation principale
git gcLance l’optimisation automatiqueMaintenance rĂ©guliĂšre du dĂ©pĂŽt
--aggressiveOptimisation plus poussée mais plus lenteNettoyage en profondeur
--autoLance gc seulement si nécessaireMaintenance conditionnelle
--prune=<date>Supprime les objets plus anciens que la dateNettoyage ciblé par ùge
Link to original

📋 Sous-modules

git submodule

Description : GÚre les sous-modules Git.

Syntaxe : git submodule [<options>] <command> [<args>]

Sous-commandeDescriptionUtilisation principale
git submodule add <url>Ajoute un nouveau sous-moduleIntégrer un projet externe
git submodule initInitialise les sous-modulesPréparer les sous-modules aprÚs clone
git submodule updateMet à jour les sous-modules vers les commits référencésSynchroniser les sous-modules
git submodule statusAffiche l’état des sous-modulesVĂ©rifier l’état des dĂ©pendances
git submodule foreachExécute une commande dans chaque sous-moduleActions en lot sur les sous-modules
Link to original

📄 Formatage & Export

git archive

Description : Crée une archive des fichiers du dépÎt.

Syntaxe : git archive [<options>] <tree-ish> [<path>...]

OptionDescriptionUtilisation principale
git archive <commit>CrĂ©e une archive tar du commit spĂ©cifiĂ©Export d’une version
--format=<format>Spécifie le format (tar, zip, etc.)Archives dans différents formats
--output=<fichier>Nom du fichier de sortieSpĂ©cifier le nom d’archive
--prefix=<prĂ©fixe>Ajoute un prĂ©fixe aux chemins dans l’archiveOrganisation de l’archive
Link to original

📁 Fichiers & RĂ©pertoire

git mv

Description : Déplace ou renomme un fichier, dossier ou lien symbolique.

Syntaxe : git mv [<options>] <source> <destination>

OptionDescriptionUtilisation principale
git mv <source> <dest>Déplace ou renomme un fichier/dossierRenommer ou déplacer des fichiers trackés
-f, --forceForce le dĂ©placement mĂȘme si la destination existeÉcraser un fichier existant
-kIgnore les erreurs et continue avec les autres fichiersTraitement en lot robuste
-n, --dry-runSimule l’opĂ©ration sans l’exĂ©cuterVĂ©rifier avant d’agir
-v, --verboseAffiche les détails des opérations effectuéesVoir ce qui est déplacé
Link to original

git rm

Description : Supprime les fichiers du suivi Git et du disque.

Syntaxe : git rm [<options>] <fichier>...

OptionDescriptionUtilisation principale
git rm <fichier>Supprime le fichier du suivi Git et du disqueSupprimer définitivement un fichier
--cachedSupprime seulement du suivi Git, laisse le fichier sur disqueArrĂȘter de tracker sans supprimer
-rSuppression récursive (pour les dossiers)Supprimer des répertoires entiers
-f, --forceForce la suppression mĂȘme si le fichier a des modificationsSupprimer malgrĂ© des changements
-n, --dry-runSimule la suppression sans l’exĂ©cuterVĂ©rifier quels fichiers seraient supprimĂ©s
-q, --quietMode silencieuxSuppression sans messages
--ignore-unmatchNe pas Ă©chouer si les fichiers n’existent pasScripts robustes
Link to original

git restore

Description : Restaure les fichiers dans le working directory ou l’index.

Syntaxe : git restore [<options>] <pathspec>...

OptionDescriptionUtilisation principale
git restore <fichier>Restaure le fichier depuis le dernier commitAnnuler les modifications d’un fichier
--stagedRestaure depuis l’index (unstage)Annuler un git add
--worktreeRestaure dans le répertoire de travail (défaut)Préciser explicitement la cible
--source=<commit>Restaure depuis un commit spécifiqueRécupérer une version antérieure
-p, --patchMode interactif pour restaurer partiellementRestauration sélective par morceaux
--staged --worktreeRestaure à la fois l’index et le working directoryRestauration complùte
-q, --quietMode silencieuxRestauration sans messages
Link to original

📩 TĂ©lĂ©chargement & Clonage

git clone

Description : Clone un repository distant.

Syntaxe : git clone [<options>] <repository> [<directory>]

Voici un tableau synthĂ©tique des principales options/arguments de la commande git clone avec leur description et un exemple :

OptionDescriptionExemple
(aucune)Clone le dépÎt distant (toutes les branches, HEAD checkout)git clone <https://github.com/user/repo.git>
-b <nom>, --branch <nom>Clone et positionne le HEAD sur la branche ou le tag indiquégit clone -b develop <https://github.com/user/repo.git>
-o <nom>, --origin <nom>Donne un nom personnalisé au remote (au lieu de origin
)
git clone -o upstream <https://github.com/user/repo.git>
--bareCrée un dépÎt bare (sans working directory), utilisé comme dépÎt centralgit clone --bare <https://github.com/user/repo.git>
—mirror
Crée un miroir complet (inclut toutes les refs, tags, branches, hooks - pour duplication exacte)git clone --mirror <https://github.com/user/repo.git>
—depthClone en mode shallow : rĂ©cupĂšre seulement les n derniers commitsgit clone --depth 1 <https://github.com/user/repo.git>
--single-branchNe clone que la branche spécifiée (par défaut avec --depth, sinon toutes les branches)git clone --single-branch -b develop ...
—no-single-branch
Avec --depth, récupÚre aussi les branches proches non shallowgit clone --depth 10 --no-single-branch ...
recursive
, --recurse-submodules
Clone le dépÎt ainsi que ses submodulesgit clone --recursive ...
--shallow-submodulesClone les submodules aussi en mode shallowgit clone --recurse-submodules --shallow-submodules ...
-c <clé>=<valeur>, --config <clé>=<valeur>Applique une configuration spécifique au dépÎt cloné (git config initiale)git clone -c core.autocrlf=false ...

—template=<dossier>
Utiliser un dossier de template personnalisé (hook, etc.)git clone --template=/chemin/template ...
-q, --quietMode silencieux : messages succinctsgit clone --quiet ...
-v, --verboseMode verbeux : affiche plus d’informationsgit clone --verbose ...
-n, —no-checkoutNe fait pas le checkout aprĂšs clone (juste le dĂ©pĂŽt)git clone --no-checkout ...
-l, --localClone optimisé pour dépÎt local (hardlinks sur objets, par défaut pour chemins locaux)git clone -l /chemin/vers/repo
--no-localForce un clone “normal” mĂȘme si le dĂ©pĂŽt source est localgit clone --no-local /chemin/vers/repo
-s, —sharedClone en partageant les objets avec le repo source (alternates, pas de duplicata)git clone -s /chemin/vers/repo
—no-hardlinksDĂ©sactive l’utilisation de hardlinks mĂȘme pour clone localgit clone --no-hardlinks /chemin/vers/repo
—reference<repo>Utilise dĂ©jĂ  des objets existants dans un autre dĂ©pĂŽt comme cachegit clone --reference=../autrerepo ...
-u <upload-pack>,—upload-pack<chemin>Chemin d’un programme upload-pack distant pour SSHgit clone -u ssh-upload-pack ...

Points importants

  • c permet d’injecter une config git locale dĂšs le clonage.
  • Avec un repo bare, pas de working directory : utile pour les serveurs d’intĂ©gration ou de backup.
  • -mirror clone absolument tout, pas seulement branches et tags, parfait pour de la migration/backup complet.
  • b permet de cloner et d’ĂȘtre tout de suite sur la bonne branche, mĂȘme si ce n’est pas le HEAD.

Pour la liste exhaustive :

Cf. : Documentation officielle git-clone135864

Link to original

🔄 Synchronisation

git push

Description : Envoie les commits locaux vers le repository distant.

Syntaxe : git push [<options>] [<repository> [<refspec>...]]

OptionDescriptionUtilisation principale
git push <remote>Envoie les commits de la branche locale vers la branche distante correspondantePush standard vers origin
-u, --set-upstreamÉtablit le lien de suivi entre branche locale et distantePremier push d’une nouvelle branche
-f, --forceForce le push mĂȘme si cela réécrira l’historique distantAttention : peut Ă©craser le travail d’autres
--force-with-leaseForce le push mais seulement si personne d’autre n’a poussĂ© entre tempsPush forcĂ© plus sĂ»r que —force
-d, --deleteSupprime la branche ou le tag distantNettoyer les branches distantes obsolĂštes
--allPousse toutes les branches locales vers le distantSynchronisation massive
--tagsPousse tous les tags vers le distantPartager les versions/releases
-n, --dry-runSimule le push sans l’exĂ©cuterVĂ©rifier avant d’agir
-q, --quietMode silencieuxPour les scripts
-v, --verboseMode verbeux avec détailsDébogage
--pruneSupprime les rĂ©fĂ©rences distantes qui n’existent plus localementNettoyage des rĂ©fĂ©rences
Link to original

📝 Staging & Commits

git add

Description : Ajoute des fichiers à la zone de staging.

Syntaxe : git add [<options>] [--] <pathspec>...

OptionDescriptionUtilisation principale
git add <fichier>Ajoute un fichier spécifique au stagingStaging ciblé
git add .Ajoute tous les fichiers du répertoire courantStaging de tous les changements
-A, --allAjoute tous les fichiers du projet (mĂȘme supprimĂ©s)Staging complet du projet
-u, --updateAjoute seulement les fichiers déjà trackés et modifiésMise à jour des fichiers existants
-p, --patchMode interactif pour choisir les parties à stagerStaging partiel d’un fichier
-i, --interactiveMode interactif completContrĂŽle fin du staging
-n, --dry-runSimule l’ajout sans l’exĂ©cuterVĂ©rification avant staging
-f, --forceForce l’ajout mĂȘme pour les fichiers ignorĂ©sAjouter des fichiers .gitignore
-v, --verboseMode verbeuxVoir ce qui est ajouté
--ignore-errorsContinue mĂȘme si certains fichiers ne peuvent ĂȘtre ajoutĂ©sBatch processing robuste
Link to original

git commit

Description : Crée un commit avec les changements stagés.

Syntaxe : git commit [<options>] [--] <pathspec>...

OptionDescriptionUtilisation principale
git commitOuvre l’éditeur pour saisir le message de commitCommit standard avec message dĂ©taillĂ©
-m <message>Spécifie le message de commit directementCommit rapide avec message court
-a, --allCommite automatiquement tous les fichiers trackés modifiésCommit rapide sans staging préalable
-am <message>Combine -a et -mCommit ultra-rapide
--amendModifie le dernier commit au lieu d’en crĂ©er un nouveauCorriger le dernier commit
--no-editNe pas ouvrir l’éditeur (avec —amend)Amend rapide sans changer le message
-v, --verboseAffiche le diff dans l’éditeur de messageVoir les changements lors du commit
-n, --no-verifyIgnore les hooks pre-commit et commit-msgBypass des vérifications
--dry-runSimule le commit sans le créerVérification avant commit
-s, --signoffAjoute une ligne “Signed-off-by”ConformitĂ© aux standards de contribution
Link to original

🌿 Branches & Merge

git rebase

Description : Applique une suite de commits sur une autre base.

Syntaxe : git rebase [<options>] [<upstream> [<branch>]]

OptionDescriptionUtilisation principale
git rebase <branche>Rejoue les commits de la branche courante sur la branche spĂ©cifiĂ©eLineariser l’historique
-i, --interactiveMode interactif pour modifier, rĂ©ordonner, fusionner les commitsRéécriture d’historique avancĂ©e
--onto <branche>Spécifie la nouvelle base pour le rebaseRebase sur une branche différente
--continueContinue le rebase aprÚs résolution des conflitsReprendre aprÚs conflit
--abortAnnule le rebase et revient Ă  l’état initialAbandonner un rebase problĂ©matique
--skipIgnore le commit courant et continuePasser un commit conflictuel
--autosquashRĂ©organise automatiquement les commits marquĂ©s pour fixup/squashNettoyage automatique de l’historique
--preserve-mergesPréserve les commits de mergeGarder la structure des fusions
-X <strategy-option>Options pour la stratégie de fusionRésolution personnalisée des conflits
Link to original

git switch

Description : Change de branche de maniÚre simplifiée (alternative moderne à checkout).

Syntaxe : git switch [<options>] [<branch>]

OptionDescriptionUtilisation principale
git switch <branche>Change vers la branche spécifiéeNavigation simple entre branches
-c <branche>Crée une nouvelle branche et y basculeCréer et basculer en une commande
-C <branche>Force la crĂ©ation d’une branche (Ă©crase si elle existe)RecrĂ©er une branche
--detachBascule en mode HEAD détaché sur un commitExplorer un commit sans créer de branche
-f, --forceForce le changement mĂȘme avec des modifications non commitĂ©esChangement forcĂ© (perte possible de modifications)
--discard-changesJette les modifications locales avant de basculerNettoyage automatique avant changement
--mergeEffectue un merge à trois voies si nécessaireRécupérer les modifications lors du changement
-t, --trackConfigure le suivi d’une branche distanteLier à une branche distante
--no-trackNe configure pas le suiviBranche locale indépendante
--guessDevine la branche distante à suivre (défaut)Création automatique de branche de suivi
--no-guessDésactive la détection automatiqueContrÎle strict de la création
Link to original

git branch

Description : Gestion des branches.

Syntaxe : git branch [<options>] [-r | -a] [--merged | --no-merged] [<pattern>...]

OptionDescriptionUtilisation principale
git branchListe les branches localesVoir les branches disponibles
-a, --allListe toutes les branches (locales et distantes)Vue complĂšte des branches
-r, --remotesListe seulement les branches distantesVoir les branches du serveur
-v, --verboseAffiche le dernier commit de chaque branchePlus d’informations sur les branches
<nom>Crée une nouvelle brancheCréer une branche
-d, --deleteSupprime une branche (sécurisé)Nettoyer les branches fusionnées
-DForce la suppression d’une brancheSupprimer une branche non fusionnĂ©e
-m, --moveRenomme une brancheChanger le nom d’une branche
--mergedListe les branches déjà fusionnéesIdentifier les branches à nettoyer
--no-mergedListe les branches non fusionnéesVoir les branches actives
--set-upstream-to=<upstream>Définit la branche de suiviConfigurer le lien avec une branche distante
Link to original

git checkout

Description : Change de branche ou restaure des fichiers.

Syntaxe : git checkout [<options>] <branch>

OptionDescriptionUtilisation principale
git checkout <branche>Change vers la branche spécifiéeNavigation entre branches
-b <branche>Crée et change vers une nouvelle brancheCréer et basculer en une commande
-B <branche>Force la création et le changement vers une brancheRecréer une branche existante
<fichier>Restore un fichier depuis le dernier commitAnnuler les modifications d’un fichier
<commit> -- <fichier>Restore un fichier depuis un commit spécifiqueRécupérer une version antérieure
-p, --patchMode interactif pour restaurer partiellementRestauration sélective
-f, --forceForce le changement mĂȘme avec des modifications non commitĂ©esChangement forcĂ© (perte de modifications)
--detachDétache HEAD (mode detached HEAD)Explorer un commit spécifique
--trackCrée une branche de suivi pour une branche distanteSuivre une branche distante
--no-trackNe crée pas de lien de suiviBranche indépendante
Link to original

git merge

Description : Fusionne une branche dans la branche courante.

Syntaxe : git merge [<options>] [<commit>...]

Options principales :

OptionDescriptionUtilisation principale
git merge <branche>Fusionne la branche spécifiée dans la branche couranteFusion standard
--no-ffCrée toujours un commit de merge (pas de fast-forward)Historique explicite des fusions
--ff-onlyRefuse la fusion sauf si fast-forward possibleÉviter les commits de merge
--squashFusionne en un seul commit sans crĂ©er de commit de mergeSimplifier l’historique
-m <message>Spécifie le message du commit de mergeMessage personnalisé
--abortAnnule une fusion en cours en cas de conflitAnnuler une fusion problématique
--continueContinue une fusion aprÚs résolution des conflitsFinaliser une fusion aprÚs conflits
-X <strategy-option>Options pour la stratégie de fusionFusion personnalisée
--no-commitEffectue la fusion sans créer le commit automatiquementContrÎle manuel du commit de fusion
-v, --verboseMode verbeuxDétails de la fusion
Link to original

📊 Historique & Information

git show

Description : Affiche les dĂ©tails d’un objet Git (commit, tag, arbre, blob).

Syntaxe : git show [<options>] [<objet>...]

OptionDescriptionUtilisation principale
git show <commit>Affiche les dĂ©tails d’un commit avec ses modificationsExaminer un commit spĂ©cifique
--statAffiche les statistiques des fichiers modifiésRésumé quantitatif des changements
-p, --patchAffiche le diff complet (défaut pour les commits)Voir le contenu des modifications
--name-onlyAffiche seulement les noms des fichiers modifiésListe des fichiers changés
--name-statusAffiche les noms et statuts des fichiersVoir les types de modifications
--pretty=<format>Format d’affichage du commitPersonnaliser la prĂ©sentation
--abbrev-commitUtilise des SHA-1 abrégésAffichage plus compact
--no-patchN’affiche pas le diffVoir seulement les mĂ©tadonnĂ©es
<commit>:<fichier>Affiche le contenu d’un fichier Ă  un commit donnĂ©Examiner une version spĂ©cifique d’un fichier
Link to original

git log

Description : Affiche l’historique des commits.

Syntaxe : git log [<options>] [<revision range>] [[--] <path>...]

OptionDescriptionUtilisation principale
git logAffiche l’historique completVoir l’historique des commits
--onelineAffiche un commit par ligne (format condensĂ©)Vue rapide de l’historique
--graphAffiche un graphique ASCII des branchesVisualiser les fusions et branches
-n <nombre>Limite le nombre de commits affichésVoir seulement les derniers commits
--since=<date>Affiche les commits depuis une dateHistorique filtré par date
--until=<date>Affiche les commits jusqu’à une dateHistorique bornĂ© dans le temps
--author=<auteur>Filtre par auteurVoir les commits d’une personne
--grep=<motif>Filtre par message de commitRecherche dans les messages
-p, --patchAffiche les différences pour chaque commitVoir le contenu des modifications
--statAffiche les statistiques des fichiers modifiésRésumé des changements
--pretty=<format>Format d’affichage personnalisĂ©Personnaliser la sortie
Link to original

git status

Description : Affiche l’état du working directory et staging area.

Syntaxe : git status [<options>] [--] [<pathspec>...]

OptionDescriptionUtilisation principale
git statusAffiche l’état complet du dĂ©pĂŽtVue d’ensemble des modifications
-s, --shortFormat court et condensĂ©Vue rapide de l’état
-b, --branchAffiche les informations de la brancheVoir la branche courante et son état
--porcelainFormat adapté aux scriptsParsing automatique
-u, --untracked-filesContrĂŽle l’affichage des fichiers non trackĂ©sGĂ©rer l’affichage des nouveaux fichiers
--ignoredAffiche aussi les fichiers ignorésDebug des rÚgles .gitignore
-zTerminaison par NUL des noms de fichiersProcessing sécurisé des noms de fichiers
Link to original

git diff

Description : Montre les différences entre commits, branches, fichiers.

Syntaxe : git diff [<options>] [<commit>] [--] [<path>...]

OptionDescriptionUtilisation principale
git diffDifférences entre working directory et staging areaVoir les modifications non stagées
--cachedDifférences entre staging area et dernier commitVoir ce qui sera committé
<commit1>..<commit2>Différences entre deux commitsComparer des versions
--name-onlyAffiche seulement les noms des fichiers modifiésListe des fichiers changés
--statAffiche les statistiques des modificationsRésumé quantitatif
-w, --ignore-all-spaceIgnore les changements d’espacesDiff sans les espaces
--color-wordsColore les mots modifiésVue fine des changements
-U<n>Nombre de lignes de contexteContrĂŽler le contexte
Link to original

git grep

Description : Recherche dans le contenu des fichiers avec motifs.

Syntaxe : git grep [<options>] <motif> [--] [<paths>...]

OptionDescriptionUtilisation principale
git grep <motif>Recherche le motif dans tous les fichiers trackésRecherche basique
-n, --line-numberAffiche les numéros de ligneLocaliser précisément
-i, --ignore-caseIgnore la casseRecherche insensible Ă  la casse
-w, --word-regexpCherche seulement les mots entiersRecherche précise
-v, --invert-matchInverse la recherche (lignes ne contenant pas le motif)Recherche inversée
-c, --countAffiche seulement le nombre d’occurrences par fichierStatistiques de recherche
-l, --files-with-matchesAffiche seulement les noms de fichiers contenant le motifListe des fichiers concernés
-p, --show-functionAffiche la fonction englobanteContexte de programmation
--cachedRecherche dans l’index au lieu du working directoryRecherche dans les fichiers stagĂ©s
-e <motif>Spécifie le motif (utile si le motif commence par -)Motifs complexes
Link to original

🔄 Annulation & Correction

git stash

Description : Sauvegarde temporairement les modifications non commitées.

Syntaxe : git stash [<options>] [<message>]

OptionDescriptionUtilisation principale
git stashSauvegarde les modifications dans une pile temporaireChanger de branche rapidement
git stash popApplique et supprime le dernier stashRécupérer ses modifications
git stash listListe tous les stashs sauvegardésVoir les sauvegardes disponibles
git stash applyApplique le stash sans le supprimerRéutiliser un stash plusieurs fois
git stash dropSupprime un stash spécifiqueNettoyer les stashs obsolÚtes
git stash showAffiche le rĂ©sumĂ© d’un stashVoir ce qui est dans un stash
-u, --include-untrackedInclut les fichiers non trackésStash complet avec nouveaux fichiers
-k, --keep-indexGarde les modifications dans l’indexStash sĂ©lectif
-p, --patchMode interactif pour choisir les parties Ă  stasherStash partiel
Link to original

git cherry-pick

Description : Applique les modifications d’un commit spĂ©cifique sur la branche courante.

Syntaxe : git cherry-pick [<options>] <commit>...

OptionDescriptionUtilisation principale
git cherry-pick <commit>Applique les modifications du commit sur la branche couranteRĂ©cupĂ©rer un commit d’une autre branche
-n, --no-commitApplique sans créer de commit automatiquementPréparer plusieurs cherry-picks
-xAjoute “(cherry picked from commit 
)” au messageTraçabilitĂ© du cherry-pick
--continueContinue aprÚs résolution de conflitsFinaliser un cherry-pick conflictuel
--abortAnnule le cherry-pick en coursAbandonner un cherry-pick problématique
-m <parent-number>Pour cherry-pick un merge, spĂ©cifie quel parent utiliserCherry-pick d’une fusion
Link to original

git reset

Description : Reset HEAD courante vers état spécifié.

Syntaxe : git reset [<mode>] [<commit>]

OptionDescriptionUtilisation principale
git reset <commit>Reset soft vers le commit (garde staging et working directory)Défaire des commits en gardant les changements
--soft <commit>Reset seulement HEAD, garde staging et working directoryRecommitter différemment
--mixed <commit>Reset HEAD et staging, garde working directory (défaut)Défaire le staging
--hard <commit>Reset HEAD, staging et working directoryTout annuler vers un état propre
<fichier>Retire un fichier du stagingDéfaire un git add
HEAD~<n>Reset vers n commits en arriĂšreRevenir en arriĂšre
Link to original

git revert

Description : Crée nouveaux commits qui annulent commits existants.

Syntaxe : git revert [<options>] <commit>...

OptionDescriptionUtilisation principale
git revert <commit>Crée un commit qui annule les changements du commit spécifiéAnnuler un commit de façon sûre
-n, --no-commitEffectue le revert sans créer le commit automatiquementPréparer plusieurs reverts
-m <parent-number>Pour reverter un merge, spécifie quel parent garderReverter une fusion
--continueContinue un revert aprÚs résolution de conflitsFinaliser un revert conflictuel
--abortAnnule un revert en coursAbandonner un revert problématique
--editOuvre l’éditeur pour modifier le messagePersonnaliser le message de revert
--no-editUtilise le message par défautRevert automatique
Link to original

git bisect


Description : Utilise la recherche binaire pour trouver un commit qui introduit un bug.

Syntaxe : git bisect <subcommande> [<options>]

Sous-commandeDescriptionUtilisation principale
git bisect startDémarre une session de bisectDébut de recherche de bug
git bisect bad [<commit>]Marque un commit comme contenant le bugIndiquer un commit défaillant
git bisect good [<commit>]Marque un commit comme ne contenant pas le bugIndiquer un commit fonctionnel
git bisect resetTermine la session et revient Ă  la branche originaleFin de recherche
git bisect skipIgnore le commit courant (non testable)Passer un commit problématique
git bisect logAffiche le journal de la session bisectSuivi de la recherche
git bisect replay <file>Rejoue une session depuis un fichier de logRépéter une recherche
git bisect run <cmd>Automatise le bisect avec une commande de testRecherche automatisée
Link to original

🔍 Analyse & DĂ©bug

git blame

Description : Affiche qui a modifiĂ© chaque ligne d’un fichier et quand.

Syntaxe : git blame [<options>] <fichier>

OptionDescriptionUtilisation principale
git blame <fichier>Affiche l’auteur et le commit pour chaque ligneTrouver qui a Ă©crit une ligne de code
-L <dĂ©but>,<fin>Limite l’analyse Ă  une plage de lignesAnalyser une section spĂ©cifique
-CDĂ©tecte les lignes copiĂ©es/dĂ©placĂ©es dans le mĂȘme commitAnalyse approfondie des modifications
-MDétecte les lignes déplacées/copiées entre fichiersSuivi des refactorisations
-wIgnore les changements d’espacesFocus sur les vraies modifications
Link to original

git reflog

Description : Affiche l’historique des rĂ©fĂ©rences (oĂč HEAD a pointĂ©).

Syntaxe : git reflog [<options>] [<ref>]

OptionDescriptionUtilisation principale
git reflogAffiche l’historique de HEADRĂ©cupĂ©rer des commits “perdus”
git reflog <branche>Affiche l’historique d’une branche spĂ©cifiqueAnalyser l’évolution d’une branche
--allAffiche le reflog de toutes les référencesVue globale des mouvements
-n <nombre>Limite le nombre d’entrĂ©es affichĂ©esVoir seulement les derniĂšres actions
Link to original

🌐 Remote (Distant)

git fetch

Description : RécupÚre les objets et refs depuis un dépÎt distant.

Syntaxe : git fetch [<options>] [<repository> [<refspec>...]]

OptionDescriptionUtilisation principale
git fetch <remote>RécupÚre les nouvelles données du dépÎt distant sans mergerMise à jour des références distantes
--allRécupÚre depuis tous les remotes configurésSynchronisation multi-remotes
-p, --pruneSupprime les références de branches distantes suppriméesNettoyage des branches obsolÚtes
--dry-runSimule le fetch sans téléchargerPrévisualisation
--depth <n>Limite la profondeur de l’historique rĂ©cupĂ©réÉconomie de bande passante
--unshallowConvertit un clone shallow en clone completRĂ©cupĂ©rer tout l’historique
-f, --forceForce la mise Ă  jour des rĂ©fĂ©rences mĂȘme en cas de fast-forward impossibleSynchronisation forcĂ©e
-t, --tagsRécupÚre aussi tous les tagsSynchronisation des versions
--no-tagsN’inclut pas les tagsFetch ciblĂ© sur le code
-v, --verboseMode verbeuxDétails du processus
Link to original

git remote

Description : Gestion des repositories distants.

Syntaxe : git remote [-v | --verbose]

OptionDescriptionUtilisation principale
git remoteListe les remotes configurésVoir les dépÎts distants
-v, --verboseAffiche les URLs des remotesDétails des remotes
add <nom> <url>Ajoute un nouveau remoteConfigurer un nouveau dépÎt distant
remove <nom>Supprime un remoteNettoyer les remotes obsolĂštes
rename <ancien> <nouveau>Renomme un remoteRéorganiser les remotes
set-url <nom> <url>Change l’URL d’un remoteModifier l’adresse d’un remote
show <nom>Affiche les informations dĂ©taillĂ©es d’un remoteDiagnostiquer un remote
prune <nom>Supprime les références des branches distantes suppriméesNettoyage des références
Link to original

đŸ·ïžÂ Tags

git tag

Description : Crée, liste, supprime tags.

Syntaxe : git tag [-a | -s | -u <keyid>] [-f] [-m <msg> | -F <file>] [-e] <tagname> [<commit>]

OptionDescriptionUtilisation principale
git tagListe tous les tagsVoir les versions disponibles
<tagname>Crée un tag léger sur le commit courantMarquer une version simple
-a <tagname>Crée un tag annotéTag avec métadonnées complÚtes
-m <message>Message pour le tag annotéDescription de la version
-d <tagname>Supprime un tagNettoyer les tags obsolĂštes
-l <pattern>Liste les tags correspondant au motifFiltrer les tags
-f, --forceForce la crĂ©ation/modification d’un tag existantRemplacer un tag
-sCrée un tag signé (GPG)Tag authentifié
-v <tagname>VĂ©rifie la signature d’un tagContrĂŽle d’authenticitĂ©
--sort=<key>Trie les tags selon différents critÚresOrganisation des tags
Link to original

🐙 Maütrise de Git : Le Grand Quiz (30 Questions)