Pour ajouter un répertoire à un sparse checkout existant sur votre Mac, ouvrez le Terminal, accédez à la racine du dépôt et exécutez git sparse-checkout add 'path/to/directory'. Git rend les fichiers suivis situés sous ce répertoire disponibles dans l'arbre de travail tout en conservant les autres sélections de sparse-checkout. Si le dépôt n'est pas déjà configuré en sparse, utilisez git sparse-checkout set --cone 'path/to/directory' pour activer le mode cone et choisir le répertoire ; cela définit la sélection, ce qui peut donc supprimer d'autres fichiers suivis de l'arbre de travail.

Avant d'exécuter la commande

Le sparse checkout modifie les fichiers suivis qui apparaissent dans l'arbre de travail d'un dépôt. Les fichiers situés en dehors de la zone sélectionnée restent suivis par Git ; ils ne sont pas supprimés de l'historique du dépôt. Dans le mode cone par défaut, Git inclut tout ce qui se trouve sous un répertoire sélectionné, ainsi que les fichiers situés directement dans ses répertoires parents et à la racine du dépôt. Cela signifie que l'ajout d'un répertoire imbriqué peut également rendre visibles des fichiers de niveau supérieur ou de niveau parent situés à proximité. Manuel de git sparse-checkout

Ouvrez le Terminal et vérifiez que Git est disponible, puis placez-vous dans le dépôt. Par exemple, remplacez le chemin d'exemple par l'emplacement de votre checkout :

git --version
cd "$HOME/Projects/sample-repo"
git status --short

Sur un Mac ne disposant pas des outils en ligne de commande Git installés, l'exécution de git peut vous inviter à installer les Command Line Tools d'Apple. Suivez l'invite de macOS, puis réexécutez git --version. Apple : Installation des Command Line Tools

Utilisez git status --short pour vérifier la présence de modifications locales avant de changer la sélection sparse. Mettez en sécurité tout travail important non commité ou non suivi, en particulier s'il se trouve dans un répertoire susceptible de devenir exclu. Exécutez les commandes de sparse-checkout depuis l'intérieur du dépôt et utilisez des chemins relatifs à sa racine. Entourez de guillemets les chemins contenant des espaces ou des métacaractères du shell, comme dans les exemples, afin que zsh ou bash transmette le chemin à Git en tant qu'argument unique.

Ajouter un répertoire à un sparse checkout existant

Si le sparse checkout est déjà activé, ajoutez le répertoire avec :

git sparse-checkout add 'Packages/Map View'

Remplacez Packages/Map View par le chemin du répertoire tel qu'il apparaît dans le dépôt. En mode cone, cela ajoute ce répertoire à la sélection actuelle plutôt que de remplacer les autres répertoires sélectionnés. La documentation de Git indique que add requiert un sparse checkout existant ; la commande met à jour la sélection et l'arbre de travail. Référence de la commande Git sparse-checkout

Pour inspecter les répertoires sélectionnés par la suite, exécutez :

git sparse-checkout list
git status --short

La liste affiche les répertoires du sparse-checkout. Le statut vous permet de voir si des fichiers suivis ou non suivis sont modifiés ; il n'affiche pas les fichiers suivis omis comme supprimés simplement parce qu'ils sont hors de la sélection sparse.

S'il s'agit d'un checkout standard

Pour un checkout complet que vous souhaitez convertir en un sparse checkout contenant un répertoire choisi, utilisez set :

git sparse-checkout set --cone 'Packages/Map View'

set établit la sélection sparse à partir des chemins que vous fournissez. Elle ne conserve pas les autres répertoires d'un checkout complet standard comme sélections supplémentaires. Si vous avez besoin de plusieurs répertoires, incluez chacun d'eux dans la même commande, par exemple git sparse-checkout set --cone 'Packages/Map View' 'Docs'. Référence de la commande Git sparse-checkout

Modifier la sélection peut supprimer des fichiers de l'arbre de travail. La documentation de Git indique également que lors de la modification des sélections en mode cone, des fichiers ignorés peuvent être supprimés dans les répertoires qui ne contiennent plus de fichiers suivis ou de fichiers non suivis non ignorés. Vérifiez votre statut et sauvegardez tous les fichiers locaux dont vous avez besoin avant d'exécuter set ; si Git signale que des fichiers non suivis empêchent le nettoyage, inspectez ces fichiers au lieu de forcer la suppression. Manuel de git sparse-checkout

Si Git signale un problème

Si git sparse-checkout add indique que le dépôt n'est pas dans un sparse checkout, déterminez si votre intention est de restreindre l'arbre de travail. Si c'est le cas, utilisez la commande set --cone ci-dessus. Si vous aviez l'intention de conserver tous les répertoires actuels et d'en ajouter seulement un, identifiez d'abord les répertoires que vous souhaitez conserver, puis transmettez-les tous ainsi que le nouveau répertoire ensemble à set --cone.

Si un chemin n'est pas présent après l'avoir ajouté, confirmez l'orthographe et la casse par rapport aux chemins suivis du dépôt, et vérifiez s'il existe sur la branche courante. Le sparse checkout sélectionne des chemins suivis ; il ne crée pas de répertoire manquant et n'initialise pas automatiquement un sous-module. Git documente l'initialisation des sous-modules comme une opération distincte. Manuel de git sparse-checkout

Le sparse checkout contrôle les fichiers que Git place dans l'arbre de travail ; ce n'est pas la même chose que de cloner uniquement un répertoire ou de supprimer d'autres répertoires du dépôt. Git prend en charge des filtres de clonage partiel distincts pour limiter les objets téléchargés depuis un serveur, mais la disponibilité et l'effet dépendent de la configuration du clone et du serveur. L'option git clone --sparse commence par les fichiers de premier niveau et constitue un autre flux de travail pour un nouveau clone. Documentation de git clone

Sources