Ignorer les modifications de fichier avec Git

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Git ne doit pas effectuer le suivi de chacun des fichiers de votre projet. Les fichiers temporaires de votre environnement de développement, les sorties de test et les journaux d'activité sont autant d'exemples de fichiers qu'il n’est probablement pas nécessaire de suivre.

Vous pouvez utiliser plusieurs mécanismes pour indiquer à Git les fichiers de votre projet qu'il ne doit pas suivre, et éviter qu'il ne signale les modifications qui y sont apportées. Pour les fichiers dont Git n’effectue pas le suivi, vous pouvez utiliser un fichier .gitignore ou exclude. Pour les fichiers dont Git effectue le suivi, vous pouvez lui demander d’arrêter de les suivre et d’ignorer les modifications.

Dans cet article, vous apprendrez comment :

  • Ignorer les modifications apportées aux fichiers non suivis à l’aide d’un fichier .gitignore.
  • Ignorer les modifications apportées aux fichiers non suivis à l’aide d’un fichier exclude.
  • Cesser de suivre un fichier et en ignorer les modifications à l’aide de la commande git update-index.
  • Cesser de suivre un fichier et en ignorer les modifications à l’aide de la commande git rm.

Utiliser un fichier .gitignore

Vous pouvez demander à Git de ne pas suivre certains fichiers de votre projet en ajoutant et en configurant un fichier .gitignore. Les entrées contenues dans un fichier .gitignore ne s’appliquent qu'aux fichiers non suivis. Elles n’empêchent pas Git de signaler les modifications relatives aux fichiers suivis. Les fichiers suivis sont des fichiers validés et existant dans la dernière capture instantanée Git.

Chaque ligne d’un fichier .gitignore spécifie un modèle de recherche de fichier par rapport au chemin d’accès du fichier .gitignore. La syntaxe .gitignore est flexible et prend en charge l’utilisation de caractères génériques pour préciser un ou plusieurs fichiers par leur nom, leur extension et leur chemin d’accès. Git fait correspondre les modèles de recherche .gitignore aux fichiers de votre projet pour déterminer les fichiers à ignorer.

En règle générale, vous ajoutez un fichier .gitignore au dossier racine de votre projet. Toutefois, vous pouvez ajouter un fichier .gitignore à n’importe quel dossier de projet pour indiquer à Git les fichiers à ignorer dans ce dossier et ses sous-dossiers à toute profondeur imbriquée. Pour plusieurs fichiers .gitignore, les modèles de recherche de fichiers spécifiés dans un fichier .gitignore situé dans un dossier ont priorité sur ceux d'un fichier .gitignore placé dans un dossier parent.

Vous pouvez créer manuellement un fichier .gitignore et y ajouter des entrées de modèle de recherche de fichiers. Vous pouvez également gagner du temps en téléchargeant un modèle .gitignore adapté à votre environnement de développement à partir du référentiel gitignore de GitHub. L’un des avantages de l’utilisation d’un fichier .gitignore réside dans la possibilité de valider les modifications et de partager avec d’autres personnes.

Remarque

Visual Studio crée automatiquement un fichier .gitignore pour l’environnement de développement Visual Studio lorsque vous créez un référentiel Git.

Visual Studio 2022 fournit une expérience de contrôle de version Git via le menu Git, Modifications GIT et à travers des menus contextuels dans l'Explorateur de solutions. Visual Studio 2019 version 16.8 offre également l’interface utilisateur Git de Team Explorer. Pour plus d’informations, consultez l’onglet Visual Studio 2019 - Team Explorer.

Dans la fenêtre Modifications Git, cliquez avec le bouton droit sur le fichier modifié que vous souhaitez que Git ignore, puis sélectionnez Ignorer cet élément local ou Ignorer cette extension. Ces options de menu n’existent pas pour les fichiers suivis.

Capture d’écran des options du menu contextuel pour les fichiers modifiés de Team Explorer dans la fenêtre Modifications Git de Visual Studio.

L’option Ignorer cet élément local ajoute une nouvelle entrée au fichier .gitignore et supprime le fichier sélectionné de la liste des fichiers modifiés.

L’option Ignorer cette extension ajoute une nouvelle entrée au fichier .gitignore et supprime tous les fichiers portant la même extension que le fichier sélectionné de la liste des fichiers modifiés.

L’une ou l’autre des options crée un fichier .gitignore s’il n’existe pas déjà dans le dossier racine de votre référentiel et y ajoute une entrée.

Modifier un fichier gitignore

Chaque entrée du fichier .gitignore est soit : un modèle de recherche de fichiers qui précise les fichiers à ignorer, soit un commentaire commençant par un signe dièse (#), soit une ligne vide (pour plus de lisibilité). La .gitignore syntaxe est flexible et prend en charge l’utilisation de caractères génériques pour spécifier des fichiers individuels ou multiples par nom, extension et chemin d’accès. Tous les chemins d’accès aux modèles de recherche de fichiers sont relatifs au fichier .gitignore.

Voici quelques exemples de modèles de fichiers courants :

# Ignore all files with the specified name.
# Scope is all repo folders.
config.json

# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json

# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json

# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile

# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile

# Ignore all files in the 'logs' subfolder.
/logs/

Suite à la modification d’un fichier .gitignore, Git met à jour la liste des fichiers qu’il ignore.

Remarque

Les utilisateurs de Windows doivent utiliser une barre oblique (/) comme séparateur de chemin d’accès dans un fichier .gitignore, au lieu d’une barre oblique inverse (\). Tous les utilisateurs doivent ajouter une barre oblique finale lorsqu'ils font référence à un dossier.

Utiliser un fichier .gitignore global

Vous pouvez désigner un fichier .gitignore en tant que fichier d’ignore global s’appliquant à tous les référentiels Git locaux. Pour cela, utilisez la commande git config comme suit :

git config core.excludesfile <gitignore file path>

Un fichier .gitignore global permet d'empêcher Git de valider certains types de fichiers, comme des binaires compilés, dans un référentiel local. Les modèles de recherche de fichiers dans un fichier .gitignore spécifique à un référentiel sont prioritaires sur les modèles d’un fichier global .gitignore.

Utiliser un fichier d’exclusion

Vous pouvez également ajouter des entrées de modèles de recherche de fichiers au fichier exclude dans le dossier .git/info/ de votre référentiel local. Le fichier exclude indique à Git les fichiers non suivis qu'il faut ignorer. Il utilise la même syntaxe pour les modèles de recherche de fichiers qu’un fichier .gitignore.

Les entrées contenues dans un fichier exclude ne s’appliquent qu'aux fichiers non suivis. Elles n’empêchent pas Git de signaler les modifications relatives aux fichiers validés qu'il suit déjà. Il n’existe qu’un seul fichier exclude par référentiel.

Étant donné que Git ne valide pas ou n’envoie pas le fichier exclude, vous pouvez l’utiliser en toute sécurité pour ignorer des fichiers de votre système local sans que cela n'affecte personne d’autre.

Utiliser git update-index pour ignorer des modifications

Parfois, il est préférable d’arrêter temporairement le suivi d’un fichier du référentiel local et de laisser Git ignorer les modifications apportées au fichier. Par exemple, vous pouvez personnaliser un fichier de paramètres pour votre environnement de développement sans risquer de valider vos modifications. Pour ce faire, vous pouvez exécuter la commande git update-index avec l’indicateur skip-worktree :

git update-index --skip-worktree <file path>

Pour reprendre le suivi, exécutez la commande git update-index avec l’indicateur --no-skip-worktree.

Vous pouvez également arrêter temporairement le suivi d’un fichier et indiquer à Git d'ignorer les modifications apportées à ce fichier à l’aide de la commande git update-index avec l’indicateur assume-unchanged. Cette option est moins efficace que l’indicateur skip-worktree, dans la mesure où l'indicateur assume-unchanged peut être rétabli par une opération pull Git modifiant le contenu d’un fichier.

git update-index --assume-unchanged <file path>

Pour reprendre le suivi, exécutez la commande git update-index avec l’indicateur --no-assume-unchanged.

Utiliser git rm pour ignorer des modifications

Les entrées d’un fichier .gitignore ou exclude n’ont aucun effet sur les fichiers déjà suivis par Git. Git effectue le suivi de fichiers que vous avez précédemment validés. Pour supprimer définitivement un fichier de la capture instantanée de Git de sorte que celui-ci cesse de le suivre, mais sans pour autant l'effacer du système de fichiers, exécutez les commandes suivantes :

git rm --cached <file path>
git commit <some message>

Ensuite, utilisez une entrée de fichier .gitignore ou exclude pour empêcher Git de signaler des modifications au fichier.

Étapes suivantes