Was ist Git?
Ein verteiltes Versionsverwaltungssystem, das die Änderungsgeschichte von Dateien aufzeichnet und verwaltet. Im Arbeitsverzeichnis bearbeitete Änderungen werden mit git add in der Staging Area registriert, mit git commit im lokalen Repository aufgezeichnet und mit git push an ein Remote-Repository wie GitHub gesendet. Mit Branches lässt sich parallel entwickeln, und git merge führt sie zusammen. Neben Quellcode verwaltet man damit auch RTL, Verifikations-Testbenches, Skripte und Ähnliches.
Japanische Bezeichnung: Git
„Git“ kommt in 5 Übungsfragen aus 2 Themen vor, z. B. Grundlagen von Linux und der Kommandozeile, Softwareentwicklung und Projektmanagement.
Fachgebiet: Grundlagen von Linux und der Kommandozeile
Die drei Orte
Git unterscheidet das Arbeitsverzeichnis, in dem Dateien bearbeitet werden, die Staging Area (den Index), die die Änderungen für den nächsten Commit enthält, und das Repository (das Verzeichnis .git), das die Commit-Historie speichert. git status zeigt die Unterschiede zwischen diesen dreien; git diff zeigt den Unterschied zwischen Arbeitsverzeichnis und Staging Area, git diff --staged den zwischen Staging Area und letztem Commit.
Branches und Remotes
Ein Branch ist ein Name für eine Abzweigung in der Commit-Historie; damit lassen sich neue Funktionen oder Korrekturen entwickeln, ohne den Hauptbranch zu beeinflussen. git clone kopiert ein Remote-Repository lokal, git pull holt neue Commits aus dem Remote-Repository, und git push sendet die eigenen Commits. Werden Branches zusammengeführt, die dieselbe Stelle unterschiedlich geändert haben, entsteht ein Konflikt, den ein Mensch auflösen muss.
Was nicht versioniert wird
Dateien, die bei Builds und Simulationen entstehen, Logs, große Wellenformdaten und Ähnliches trägt man in .gitignore ein, um sie von der Verfolgung auszuschließen. Eine einmal committete Datei bleibt verfolgt, auch wenn sie in .gitignore steht, daher nimmt man sie mit git rm --cached heraus. Ein versehentlich committetes Passwort oder ein Schlüssel bleibt in der Historie erhalten; wichtig ist daher die Gewohnheit, den Inhalt vor dem Commit mit git status und git diff zu prüfen.
Häufige Fragen
Was ist der Unterschied zwischen Git und GitHub?
Git ist die Versionsverwaltungssoftware selbst, die auf dem eigenen Computer läuft. GitHub ist ein Webdienst, der Git-Repositorys hostet und Funktionen wie Reviews über Pull Requests und Issue-Verwaltung ergänzt. Es gibt ähnliche Dienste wie GitLab sowie Server im eigenen Unternehmen, und Git selbst lässt sich mit jedem davon verwenden.
Wie macht man den letzten Commit rückgängig?
Wurde er noch nicht gepusht, lässt sich der letzte Commit mit git commit --amend korrigieren oder mit git reset rückgängig machen. Bei einem bereits gepushten und geteilten Commit ist git revert sicherer, das die rückgängig machende Änderung als neuen Commit hinzufügt, damit es keine Widersprüche zu den Historien anderer gibt.