Raccourcissez un hash de commit Git à la longueur voulue
Cet outil de hash court pour commit Git reçoit un identifiant d’objet SHA-1 ou SHA-256 complet et renvoie exactement le nombre demandé de premiers caractères hexadécimaux.
Lancer gratuitement
Il convient lorsqu’un identifiant intégral prend trop de place dans une étiquette de version, un écran de compilation, un résumé de journaux ou une note de déploiement. L’opération est déterministe, conserve la casse fournie et refuse toute longueur supérieure à celle du hash complet.
Créez un identifiant court et prévisible
Les identifiants d’objets Git sont précis, mais leur représentation hexadécimale complète s’intègre mal aux interfaces compactes et aux documents destinés à être lus rapidement. Cette capacité accepte un hash de commit SHA-1 complet de 40 caractères ou SHA-256 de 64 caractères, puis renvoie le nombre de caractères initiaux que vous demandez. Il s’agit de la forme conventionnelle utilisée par Git pour afficher un nom d’objet abrégé. Puisque vous fixez directement la longueur, le résultat ne varie pas selon la taille du dépôt, la configuration locale ou la machine qui exécute une commande. Un processus de publication peut ainsi employer systématiquement 12 caractères, tandis qu’un badge étroit peut se limiter à 8. La réponse contient le hash raccourci et sa longueur, ce qui simplifie sa validation avant son insertion dans un autre système. La casse d’origine est conservée et aucun dépôt ne doit être cloné : seules la validation et l’extraction du préfixe sont effectuées.
Choisissez la longueur en tenant compte des collisions
Un hash court est une abréviation, et non un nouvel identifiant de commit. Les préfixes courts sont plus lisibles, mais risquent davantage de correspondre à plusieurs objets lorsque le dépôt grandit. Git peut déterminer la plus courte abréviation unique en examinant les objets disponibles. Cet outil ne peut pas garantir cette unicité, car il ne reçoit qu’un seul hash et n’inspecte aucun dépôt. Choisissez une longueur adaptée au contexte et au nombre d’objets attendu. 7 ou 8 caractères peuvent convenir à un petit projet, alors que 12 caractères ou davantage offrent une marge supérieure pour les historiques volumineux et les archives de compilation durables. Si une commande ultérieure doit résoudre la valeur dans un dépôt, vérifiez que le préfixe y est sans ambiguïté. La capacité empêche une erreur précise : demander plus de caractères que le hash complet n’en contient. Elle exige également un identifiant SHA-1 ou SHA-256 intégral plutôt qu’une valeur déjà abrégée.
Uniformisez l’abréviation dans vos automatisations
Une longueur fixe est utile lorsque plusieurs outils doivent désigner la même révision de façon cohérente. Une tâche d’intégration continue peut prendre le SHA complet fourni par son service, appliquer la longueur définie par votre projet et réutiliser le résultat dans les noms d’artefacts, les étiquettes de conteneurs, les annotations de déploiement ou les rapports de tests. Les scripts de publication peuvent l’afficher à côté d’une version sémantique sans intégrer de commandes Git propres à un environnement. Les systèmes de supervision et d’assistance peuvent présenter une référence compacte tout en conservant le hash complet dans leurs métadonnées. L’algorithme se limitant à la validation et à la découpe d’un préfixe, une même entrée produit toujours la même sortie dans le navigateur et par API. Il n’utilise ni réseau, ni dépôt, ni hasard, ni heure. Lorsque l’identité exacte compte entre plusieurs dépôts ou forks, conservez également l’identifiant complet comme référence faisant autorité.
Cas d’usage
Nommer les artefacts de compilation
Créez des suffixes de révision de largeur fixe pour les paquets, archives et sorties à partir du SHA complet fourni par la CI.
Annoter les déploiements
Affichez un préfixe de commit lisible dans les tableaux de déploiement et les notes de version, tout en conservant le hash intégral ailleurs.
Normaliser les références des journaux
Appliquez une longueur d’abréviation explicite à tous vos services afin de comparer facilement les révisions.
Questions fréquentes
Quel est le tarif ?
Le tarif de l’API est de $0.002 par requête. La même opération déterministe peut s’exécuter dans le navigateur sur cette page.
Quels formats de hash Git sont acceptés ?
L’entrée doit être un identifiant hexadécimal SHA-1 complet de 40 caractères ou SHA-256 complet de 64 caractères.
Un hash court identifie-t-il un commit de manière unique ?
Pas nécessairement. L’unicité dépend des autres objets du dépôt concerné, que cette capacité n’examine pas.
Que se passe-t-il si la longueur demandée est excessive ?
La requête échoue avec une erreur de saisie qui indique la longueur demandée et celle du hash complet.
L’outil convertit-il les lettres hexadécimales majuscules en minuscules ?
Non. Il valide l’entrée hexadécimale et conserve exactement la casse du préfixe fourni.
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/dev/commit-hash-short-form \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"commit_hash":"8f14e45fceea167a5a36dedd4bea2543d2f6b721","length":12}'const res = await fetch("https://api.kit.forhosting.com/dev/commit-hash-short-form", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"commit_hash": "8f14e45fceea167a5a36dedd4bea2543d2f6b721",
"length": 12
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/commit-hash-short-form",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"commit_hash": "8f14e45fceea167a5a36dedd4bea2543d2f6b721",
"length": 12
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/commit-hash-short-form", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"commit_hash":"8f14e45fceea167a5a36dedd4bea2543d2f6b721","length":12}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"commit_hash":"8f14e45fceea167a5a36dedd4bea2543d2f6b721","length":12}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/commit-hash-short-form", 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
{
"commit_hash": "8f14e45fceea167a5a36dedd4bea2543d2f6b721",
"length": 12
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.commit_hash_short_form",
"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.
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. |