Git-Commit-Hash auf die gewünschte Länge kürzen
Dieses Werkzeug für kurze Git-Commit-Hashes nimmt eine vollständige SHA-1- oder SHA-256-Objektkennung entgegen und gibt genau die gewünschte Anzahl führender Hexadezimalzeichen zurück.
Im Browser ausführen – kostenlos
Es eignet sich, wenn die vollständige Kennung für ein Release-Label, eine Build-Anzeige, eine Protokollübersicht oder einen Deployment-Hinweis zu lang ist. Die Berechnung ist deterministisch, erhält die eingegebene Groß- und Kleinschreibung und weist eine Länge zurück, die den vollständigen Hash überschreitet.
Erzeugen Sie eine verlässliche kurze Commit-Kennung
Git-Objektkennungen sind eindeutig und präzise, ihre vollständige hexadezimale Darstellung ist für kompakte Oberflächen und gut lesbare Aufzeichnungen jedoch oft zu lang. Diese Funktion nimmt einen vollständigen SHA-1-Commit-Hash mit 40 Zeichen oder einen SHA-256-Hash mit 64 Zeichen entgegen und gibt die von Ihnen gewünschte Zahl führender Zeichen zurück. Das entspricht der üblichen Form, in der Git abgekürzte Objektnamen darstellt. Weil Sie die Länge ausdrücklich festlegen, hängt das Ergebnis weder von der Größe eines Repositorys noch von lokalen Einstellungen oder dem ausführenden Rechner ab. Ein Release-Prozess kann beispielsweise stets 12 Zeichen verwenden, während ein schmales Statusfeld mit 8 Zeichen auskommt. Die Antwort enthält sowohl den gekürzten Wert als auch seine Länge und lässt sich dadurch leicht prüfen, bevor sie in ein anderes System übernommen wird. Die ursprüngliche Groß- und Kleinschreibung bleibt erhalten. Ein Repository muss nicht ausgecheckt werden, denn der Wert wird ausschließlich validiert und am gewünschten Präfix abgeschnitten.
Berücksichtigen Sie bei der Länge mögliche Kollisionen
Ein kurzer Hash ist eine Abkürzung und keine neue Commit-Kennung. Kurze Präfixe sind leichter lesbar, können mit wachsendem Repository aber eher auf mehrere Objekte passen. Git kann die kürzeste eindeutige Abkürzung ermitteln, indem es alle verfügbaren Objekte durchsucht. Dieses Werkzeug kann diese Eindeutigkeit nicht zusichern, weil es nur einen einzelnen Hash erhält und kein Repository untersucht. Wählen Sie die Länge passend zum Einsatzbereich und zur erwarteten Objektzahl. Für ein kleines Projekt können 7 oder 8 Zeichen praktisch sein; bei großen Historien und langfristigen Build-Archiven bieten 12 oder mehr Zeichen einen größeren Sicherheitsspielraum. Soll ein nachfolgender Befehl den Wert in einem Repository auflösen, prüfen Sie dort, ob das Präfix eindeutig ist. Die Funktion verhindert einen konkreten Fehler: Es können nicht mehr Zeichen angefordert werden, als der vollständige Hash enthält. Außerdem muss die Eingabe eine vollständige SHA-1- oder SHA-256-Kennung sein und darf nicht bereits gekürzt vorliegen.
Verwenden Sie dieselbe Abkürzung in allen Abläufen
Eine feste Kürzungslänge hilft, wenn mehrere Werkzeuge dieselbe Revision einheitlich kennzeichnen sollen. Ein CI-Auftrag kann den vollständigen SHA-Wert seines Anbieters übernehmen, die im Projekt vereinbarte Länge anwenden und den kurzen Hash in Artefaktnamen, Container-Tags, Deployment-Anmerkungen oder Testberichten wiederverwenden. Release-Skripte können ihn neben einer semantischen Version anzeigen, ohne umgebungsspezifische Git-Befehle einzubauen. Überwachungs- und Supportsysteme können eine kompakte Revision darstellen und gleichzeitig den vollständigen Hash in ihren Metadaten aufbewahren. Da der Algorithmus nur validiert und ein Präfix ausschneidet, ergeben identische Eingaben im Browser und über die API immer identische Ausgaben. Netzwerkzugriffe, Repository-Abfragen, Zufall und zeitabhängiges Verhalten gibt es nicht. Wenn eine exakte Identifikation über Repositorys, Forks oder Archive hinweg erforderlich ist, bewahren Sie zusätzlich die vollständige Objektkennung als maßgebliche Referenz auf.
Anwendungsfälle
Build-Artefakte kennzeichnen
Erzeugen Sie aus dem vollständigen CI-SHA einheitlich lange Revisionssuffixe für Pakete, Archive und Build-Ausgaben.
Deployments vermerken
Zeigen Sie in Deployment-Übersichten und Release-Hinweisen ein lesbares Commit-Präfix an und speichern Sie den vollständigen Hash separat.
Protokollverweise vereinheitlichen
Nutzen Sie dienstübergreifend eine feste Abkürzungslänge, damit sich Revisionsangaben schnell vergleichen lassen.
Häufige Fragen
Was kostet die Nutzung?
Der API-Preis beträgt $0.002 pro Anfrage. Dieselbe deterministische Berechnung kann auf dieser Seite im Browser ausgeführt werden.
Welche Git-Hashformate werden akzeptiert?
Die Eingabe muss eine vollständige hexadezimale SHA-1-Kennung mit 40 Zeichen oder eine SHA-256-Kennung mit 64 Zeichen sein.
Kennzeichnet ein kurzer Hash einen Commit eindeutig?
Nicht grundsätzlich. Die Eindeutigkeit hängt von den anderen Objekten im jeweiligen Repository ab, das diese Funktion nicht untersucht.
Was geschieht bei einer zu großen Wunschlänge?
Die Anfrage wird mit einem Eingabefehler abgelehnt, der die gewünschte und die verfügbare Hashlänge nennt.
Wandelt das Werkzeug große Hexadezimalbuchstaben in kleine um?
Nein. Es prüft die hexadezimale Eingabe und erhält die Groß- und Kleinschreibung des gelieferten Präfixes unverändert.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem 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)Beispiel-Anfrage
{
"commit_hash": "8f14e45fceea167a5a36dedd4bea2543d2f6b721",
"length": 12
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.commit_hash_short_form",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |