Vérifiez un chemin avec des motifs .gitignore
Sachez si Git ignorerait un fichier et quelle règle en décide : logs/build.log est ignoré à cause de *.log, la deuxième règle de la liste, et une règle ultérieure comme !important.log peut annuler une précédente. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Motifs
- dist/, *.log, !important.log, secrets/**
- Chemin
- logs/build.log
- Motif correspondant
- *.log
- Indice correspondant
- 1
Vérifiez un chemin relatif au dépôt par rapport à une liste ordonnée de motifs .gitignore, sans créer de dépôt temporaire ni appeler Git. Le résultat indique si le chemin est ignoré et, lorsqu’une règle correspond, précise le dernier motif décisif ainsi que sa position indexée à partir de zéro. Le vérificateur gère les commentaires, les caractères échappés, les règles ancrées à la racine, les règles de dossier, les jokers, les classes de caractères, les doubles astérisques récursifs et les négations. Il refuse aussi les motifs mal formés au lieu de les interpréter silencieusement comme de simples littéraux.
Fournissez les règles dans leur ordre réel
Un fichier .gitignore n’est pas un simple sac de globs indépendants. Git évalue ses règles dans l’ordre, et une règle ultérieure qui correspond peut modifier la décision d’une règle précédente. Envoyez les motifs exactement dans l’ordre où ils figurent dans le fichier d’exclusion concerné.
Les motifs ordinaires qui correspondent marquent le chemin comme ignoré, tandis qu’une règle commençant par un point d’exclamation non échappé annule cette décision. Les lignes vides et celles qui commencent par un croisillon non échappé ne constituent pas des règles, comme dans un fichier d’exclusion normal. La réponse comprend le dernier motif correspondant et son indice de tableau compté à partir de zéro, ce qui permet d’expliquer un résultat surprenant dans un outil de build ou un éditeur de configuration.
Les chemins doivent être relatifs à la racine du dépôt et employer des barres obliques. Un chemin stable et normalisé évite qu’un préfixe absolu, un segment parent ou des séparateurs propres au système produisent une réponse différente.
Comprenez les règles de correspondance
Un astérisque correspond à un nombre quelconque de caractères dans un seul segment de chemin, tandis qu’un point d’interrogation correspond à un caractère autre qu’une barre. Une barre initiale ancre la règle à la racine du dépôt. Un motif sans barre peut correspondre à un nom à n’importe quelle profondeur ; si ce nom représente un dossier dans le chemin fourni, tout son contenu est également couvert.
Une barre finale exprime une règle de dossier. Comme le vérificateur reçoit un chemin et non une arborescence, il se fonde sur le texte du chemin et ses ancêtres ; il ne vérifie pas si le dernier composant existe comme fichier ou dossier. Les croisillons et points d’exclamation initiaux échappés restent littéraux, et les espaces finaux non échappés sont supprimés selon les conventions du format.
Détectez les défauts grâce à la validation
Les erreurs de glob passent facilement inaperçues lorsqu’un fichier d’exclusion grandit au fil de nombreuses petites modifications. Ce vérificateur signale une entrée non valide pour une classe de caractères non fermée ou vide, un échappement incomplet ou un marqueur de négation sans expression. Une réponse réussie ne modifie pas les règles et ne dépend ni du réseau, ni de l’heure, ni du hasard, ni du contenu du dépôt, ni du système hôte.
Elle convient donc aux contrôles déterministes avant commit, aux formulaires web, aux diagnostics d’IDE et aux tests de politique dans CI.
Cas d’usage
Expliquer une entrée de build absente
Testez le chemin absent avec les règles du projet et affichez la règle finale responsable de son exclusion.
Valider un éditeur de fichier d’exclusion
Prévisualisez l’effet d’une règle déplacée ou d’une nouvelle négation avant d’enregistrer la configuration.
Questions fréquentes
L’ordre des règles est-il important ?
Oui. Chaque règle est évaluée dans l’ordre, et la dernière correspondance détermine si le chemin est ignoré.
Les motifs négatifs sont-ils pris en charge ?
Oui. Un point d’exclamation initial non échappé crée une règle négative qui peut rendre visible un chemin précédemment ignoré.
Le vérificateur lit-il mon dépôt ou la configuration globale de Git ?
Non. Il utilise uniquement les motifs et le chemin relatif au dépôt fournis dans la requête.
Les motifs peuvent-ils traverser plusieurs dossiers ?
Oui. Un double astérisque peut franchir les limites de dossiers, tandis qu’un astérisque simple reste dans un segment.
Comment savoir quelle règle a décidé du résultat ?
La réponse indique la dernière règle correspondante et sa position dans la liste, en comptant à partir de 0. Dans l’exemple, logs/build.log est ignoré par *.log en position 1, ce qui aide à expliquer un résultat surprenant.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/dev2/gitignore-check-path \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"patterns":["dist/","*.log","!important.log"],"path":"logs/build.log"}'const res = await fetch("https://api.kit.forhosting.com/dev2/gitignore-check-path", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"patterns": [
"dist/",
"*.log",
"!important.log"
],
"path": "logs/build.log"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/gitignore-check-path",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"patterns": [
"dist/",
"*.log",
"!important.log"
],
"path": "logs/build.log"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/gitignore-check-path", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"patterns":["dist/","*.log","!important.log"],"path":"logs/build.log"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"patterns":["dist/","*.log","!important.log"],"path":"logs/build.log"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/gitignore-check-path", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"patterns": [
"dist/",
"*.log",
"!important.log"
],
"path": "logs/build.log"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.gitignore_check_path",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_patterns | 1000 |
max_pattern_chars | 1024 |
max_path_chars | 4096 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Comprenez les règles de correspondance
Les classes telles que `[0-9]` sélectionnent un caractère dans un ensemble ou une plage. Un double astérisque peut franchir les limites de dossiers : `docs/**/draft*.md` couvre donc les brouillons placés directement sous `docs` et ceux des sous-dossiers plus profonds.
Détectez les défauts grâce à la validation
Il limite aussi le nombre et la longueur des motifs afin qu’un endpoint de validation ne déclenche pas un travail de compilation illimité. Dans une automatisation, conservez `matching_pattern` avec la décision booléenne : l’explication est souvent plus utile que le booléen seul. La version navigateur emploie le même solveur pur que l’API, tandis qu’une requête API applique le tarif de base publié de $0.002.
Cas d'intégration
Appliquer la politique du dépôt dans CI
Vérifiez que les artefacts générés sont ignorés tandis que les fixtures et sources requises restent suivables.
Questions techniques
Que se passe-t-il si un motif est mal formé ?
La requête échoue avec une erreur invalid_input qui indique la position du motif et le défaut structurel.
Combien coûte une requête API ?
Le tarif de base est de $0.002 par requête. Le même solveur déterministe est également disponible dans le navigateur.