Pour séparer les fichiers générés du code source sur un Mac, créez un dossier de sortie dédié à l'intérieur du dépôt, puis ajoutez ce dossier au fichier .gitignore du dépôt. Le Finder vous aide à créer et inspecter les dossiers ; les règles d'ignorance de Git empêchent la sortie générée d'apparaître dans les futurs commits. Cela fonctionne pour les fichiers que Git ne suit pas déjà, vérifiez donc l'état du dépôt avant de vous reposer dessus.

Créer un dossier de sortie dans le Finder

Ouvrez le dossier du dépôt dans le Finder et créez un dossier pour les fichiers générés, comme build ou dist, à l'aide de Fichier > Nouveau dossier ou Maj-Commande-N. Laissez les fichiers sources à leurs emplacements actuels et configurez votre outil de build pour qu'il écrive sa sortie dans ce dossier. Le nom du dossier doit correspondre au chemin de sortie réel de l'outil ; le simple fait de créer un dossier ne redirige pas une compilation. Apple détaille les étapes de création de dossiers dans le Finder dans son guide pour organiser des fichiers dans le Finder.

Si vous n'êtes pas certain des fichiers qui sont générés, vérifiez la configuration de votre outil de build ou la documentation du projet avant de déplacer ou d'exclure quoi que ce soit. Certains fichiers générés sont requis par le projet ou volontairement commités. Conservez ces fichiers sous contrôle de version si le projet en a besoin.

Ajouter le dossier généré à .gitignore

À la racine du dépôt, créez ou ouvrez un fichier nommé .gitignore dans un éditeur de texte. Le Finder permet de créer des dossiers et de déplacer des fichiers, mais il ne fournit pas de commandes pour ignorer des fichiers dans Git ; Git lit les motifs d'exclusion à partir de .gitignore et des configurations associées. Ajoutez une règle pour le répertoire de sortie, en utilisant le chemin réel relatif au fichier .gitignore. Par exemple :

/build/

Une barre oblique initiale ancre ce motif à la racine du dépôt, et la barre oblique finale le fait correspondre à un répertoire. Si votre sortie générée est imbriquée, utilisez plutôt son chemin d'accès, comme /app/generated/. La documentation de gitignore de Git explique la correspondance des motifs et précise que les règles s'appliquant à l'ensemble du projet doivent être placées dans .gitignore afin de pouvoir être partagées avec les autres clones.

Pour un dossier généré local qui ne doit pas affecter les autres personnes travaillant sur le dépôt, ajoutez plutôt sa règle à .git/info/exclude. Git présente cela comme une alternative à .gitignore propre à chaque dépôt. Utilisez une règle commitée dans .gitignore lorsque la sortie est générée pour tous les collaborateurs du projet et doit être exclue pour l'ensemble des contributeurs.

Confirmer la règle et gérer les fichiers déjà suivis

Ouvrez Terminal et accédez au répertoire du dépôt. Vérifiez le statut, puis demandez à Git quelle règle s'applique à un chemin généré :

git status --short
git check-ignore -v build/example-file

Remplacez build/example-file par un chemin qui existe dans votre dossier de sortie. L'option -v indique la règle d'exclusion correspondante ainsi que le fichier qui la contient. Si Git n'indique aucune correspondance, confirmez le chemin et le motif : les chemins dans .gitignore sont interprétés par rapport à l'emplacement du fichier, et une règle peut être remplacée par une autre règle correspondante. La référence de check-ignore de Git décrit comment inspecter les correspondances d'exclusion.

Une règle d'ignorance n'arrête pas le suivi des fichiers déjà commités ou indexés dans Git. Git indique explicitement que les fichiers suivis ne sont pas affectés par les règles d'ignorance. Pour supprimer de l'index un fichier généré précédemment suivi tout en conservant la copie locale, utilisez git rm --cached avec le chemin exact, puis vérifiez la modification avant de commiter. Par exemple :

git rm --cached build/example-file
git status --short

Cela retire uniquement le fichier désigné de l'index de Git ; cela n'annule pas automatiquement le suivi de tous les fichiers d'un répertoire. Examinez la sortie du statut, en particulier si vous avez l'intention d'annuler le suivi de toute une arborescence de sortie, avant de commiter la modification. Le guide GitHub sur l'ignorance de fichiers explique également la distinction entre les exclusions locales et les règles partagées de .gitignore.

Utiliser le Finder pour inspecter les noms, pas pour appliquer les règles Git

Le Finder peut faciliter l'inspection des types de fichiers : choisissez Finder > Réglages > Options avancées et activez Afficher toutes les extensions de fichiers. Cela peut aider à distinguer un fichier source d'un fichier généré lorsque leurs noms sont similaires. Apple précise que les extensions peuvent autrement être masquées et déconseille de modifier l'extension d'un nom de fichier simplement pour changer son format. Consultez les instructions d'Apple pour afficher ou masquer les extensions de noms de fichiers.

La séparation fiable est donc la suivante : le Finder fournit un dossier visible pour la sortie générée, l'outil de build y écrit, et les règles d'exclusion de Git écartent du contrôle de version les fichiers non suivis éligibles. Vérifiez le chemin de sortie réel et le statut Git chaque fois que la configuration de build du projet change.

Sources