Ein Repository ist ein abgegrenzter, versionierter Projektbestand. Es enthält Dateien, Verzeichnisse und die Geschichte ihrer Änderungen. Bei einem Git-Repository gehören auch Branches, Commits, Tags und weitere Verweise zu diesem Bestand.
Ein Repository kann lokal auf einem Computer liegen oder über einen Dienst gemeinsam genutzt werden. Plattformen wie GitHub und GitLab ergänzen die Versionsverwaltung um Zugriffsrechte, Reviews, Issues, Automationen und Releases.
Mehr als ein Projektordner
Ein gewöhnlicher Ordner zeigt nur seinen aktuellen Inhalt. Ein Repository bewahrt zusätzlich, welche Änderung wann festgehalten wurde und auf welchem Entwicklungszweig sie liegt. Dadurch lassen sich frühere Stände untersuchen, Unterschiede vergleichen und zusammengehörende Änderungen als Commit nachvollziehen.
Die Versionsgeschichte ersetzt keine fachliche Erklärung. Ein Commit zeigt, was geändert wurde. Eine README, ein Architekturentscheid oder ein Runbook erklärt, wofür ein Projekt gedacht ist und wie es verwendet oder betrieben wird.
Repository und Projekt sind nicht identisch
Der Begriff «Projekt» umfasst häufig mehr als versionierte Dateien. Dazu können Aufgaben, Diskussionen, Berechtigungen, Pipelines, Pakete, Deployments und Betriebsinformationen gehören. Das Repository ist innerhalb dieses Projekts die Quelle für versionierte Inhalte.
Diese Unterscheidung ist besonders bei GitLab wichtig: Dort ist das Repository ein Bestandteil eines umfassenderen Projekts. Auch auf GitHub können Issues, Actions und Releases zum Projektkontext gehören, ohne selbst Teil der Git-Geschichte zu sein.
Lokal, Remote und Klon
Git arbeitet zunächst lokal. Ein Remote ist eine bekannte Gegenstelle, von der Änderungen geholt oder an die sie übertragen werden können. Wer ein Repository klont, erstellt eine lokale Kopie mit Projektdateien und Versionsgeschichte.
Ein Remote ist keine automatische Wahrheit. Lokale und entfernte Stände können voneinander abweichen. Vor einer Änderung muss deshalb geklärt sein, welcher Branch als gemeinsamer Hauptstand gilt, ob fremde Änderungen vorliegen und wohin ein geprüfter Stand übertragen werden darf.
Was ein Repository enthalten sollte
In ein Repository gehören Inhalte, die gemeinsam versioniert, geprüft und wiederhergestellt werden sollen. Typische Bestandteile sind:
- Quellcode und Tests,
- Markdown-Dokumentation und eine README,
- deklarative Konfigurationen,
- Build-, Prüf- und Betriebsskripte,
- kleine Beispieldaten und Vorlagen,
- Migrations- und Releaseinformationen.
Passwörter, Tokens und private Schlüssel gehören nicht hinein. Grosse Binärdateien, Laufzeitdaten, Backups und erzeugte Build-Ausgaben brauchen ebenfalls eine bewusste Ablagestrategie. Eine Datei aus dem aktuellen Branch zu löschen entfernt sie nicht aus bereits vorhandenen Commits.
Zugriff und Sichtbarkeit
Ein öffentliches Repository darf von jedem gelesen und je nach Lizenz weiterverwendet werden. Ein privates Repository begrenzt den Zugriff auf bestimmte Personen oder Systeme. Diese Sichtbarkeit ersetzt keine Lizenz und keine interne Rollenverteilung.
Schreibrechte sollten nur erhalten, wer sie für seine Aufgabe braucht. Geschützte Branches, Reviews und automatisierte Prüfungen reduzieren das Risiko, dass ungeprüfte Änderungen zum gemeinsamen Hauptstand werden. Sie ersetzen dennoch nicht die Verantwortung der Person, die einen Merge oder ein Deployment freigibt.
Source ist noch keine Laufzeit
Ein Commit im Repository belegt einen Quellstand. Er beweist nicht, dass dieser Stand gebaut, veröffentlicht oder auf einem Zielsystem wirksam wurde. Zwischen Source und Laufzeit liegen je nach Projekt Build, Tests, Freigabe, Deployment und Readback.
Deshalb sollten Source-Commit, Build-Artefakt und produktiver Zustand miteinander verknüpft werden. Erst diese Kette zeigt, welche Fassung tatsächlich läuft und wie sie bei einem Fehler zurückgenommen werden kann.
Merksatz
Ein Repository bewahrt einen versionierten Projektbestand. Verlässlich wird es durch klare Zuständigkeit, verständliche Geschichte, begrenzte Zugriffe und eine überprüfbare Verbindung zur ausgelieferten Laufzeit.