Git ist wohl eines der wichtigsten Tools für Software-Entwickler. Es handelt sich dabei um eine sogenannte Versionsverwaltung. Mithilfe dieser Software kannst du Dateien in verschiedenen Versionen speichern und zu jedem Zeitpunkt zu einer "älteren" Version zurückkehren.
Obwohl es dafür bereits verschiedene Anwendungen gibt, die eine grafische Benutzerobfläche zur Verfügung stellen oder aber Plugins und Erweiterungen für diverse Entwicklungsumgebungen bzw. Editoren (wie zum Beispiel: Sublime Text), verwendet man häufig dennoch die ursprüngliche Kommandozeilen-Variante.
Git ist recht simpel aufgebaut und da es nur eine Handvoll Befehle gibt, die man regelmäßig braucht, ist es auch sehr schnell zu erlernen.
Zunächst einmal haben wir einen sogenannten master
-Branch. Dieser beinhaltet immer die "aktuellste Hauptversion". Mit jeder Änderung lässt sich eine neue Version, ein sogenannter Commit erzeugen. Auf welchen man anschließend referenzieren kann. Oder anders formuliert, beim Erzeugen eines Commits entsteht eine neue Version, eine Art Snapshot.
Erzeugt werden kann nun eine baumartige Struktur mittels sogenannten Branches und Commits. Ein Branch ist quasi eine Kopie von einer bestimmten Version (zu einem bestimmten Zeitpunkt) bei der du parallel arbeiten kannst. Die folgende Grafik veranschaulicht, wie du Git beispielsweise benutzen kannst um für verschiedene Features jeweils eigene Branches zu erzeugen (sogenannte Feature-Branches), an denen parallel gearbeitet werden kann.
Das hat den Vorteil, dass noch nicht abgeschlossene Features vorerst in einem "Entwicklungsstadium" bleiben können, bevor sie anschließend wieder (zurück) in den master
-Branch übernommen (d.h. merged
) werden.
Die grundlegende Idee ist folgende. Du legst ein neues Git-Projekt an, was im wesentlichen einfach ein Ordner ist, indem sich deine jeweiligen Dateien befinden. Anschließend nimmst du Änderungen an einer oder mehrerer dieser Dateien vor. Sobald du damit fertig bist, kannst du via Git eine neue Version bzw. einen Snapshot - einen sogenannten commit
- erzeugen. Dieser kann anschließend mit einem Git-Server synchronisiert werden.
Durch die Erzeugung möglichst vieler Commits und regelmäßigen Synchronisationen mit dem Server, können auch problemlos mehrere Personen an einem Projekt (zeitgleich) arbeiten und dies teilweise sogar in der gleichen Datei.
pull
)add
)commit
)push
)Damit du Git verwenden kannst, benötigst du zunächst einmal einen Git-Server auf dem du deine verschiedenen Git-Versionen speichern kannst. Der wohl bekannteste Dienst hierfür ist GitHub.
Anschließend musst du Git auf deinem Computer installieren.
Software zur verteilten Versionsverwaltung von Dateien
Download Mehr erfahrenSobald du Git heruntergeladen und installiert hast, müssen noch ein paar Konfigurationen vorgenommen werden.
git config --global user.name "[Dein Name]"
git config --global user.email "[Deine Email-Adresse]"
Anschließend kannst du entweder ein neues Git Repository (=Projekt) anlegen anhand eines bestehenden Verzeichnisses
git init
oder aber ein bestehendes Projekt von einem Server herunterladen:
git clone [URL zum Git-Repository]
Beachte: unter Umständen ist es notwendig einen SSH-Key am Git-Server zu hinterlegen, damit du dich authentifizieren kannst - folge hierbei einfach den Anweisungen des jeweiligen Git-Servers bzw. Dienstes.
Nun wo du dein Git-Projekt erfolgreich eingerichtet hast, kommen wir zum tatsächlichen Cheatsheet
git status
- Auflistung der "geänderten" Dateien und welche davon zum nächsten Commit hinzugefügt werden sollengit status
git add
- Datei zum nächsten Commit hinzufügengit add [pfad/zur/Datei]
git reset
- Datei vom nächsten Commit entfernen - aber Änderungen trotzdem beibehaltengit reset [pfad/zur/Datei]
git rm
- eine Datei komplett aus dem Projekt löschengit rm [pfad/zur/Datei]
git mv
- eine Datei verschieben bzw. umbenennengit mv [pfad/zur/alten/Datei] [pfad/zur/neuen/Datei]
git checkout --
- Änderungen einer Datei - vor einem Commit - verwerfengit checkout -- [pfad/zur/Datei]
git diff
- zeigt an welche Änderungen du vorgenommen hastgit diff
git diff --staged
git diff [pfad/zur/Datei]
git commit
- neue neue Version bzw. einen Commit erzeugengit commit -m "Kommentar was du geändert hast"
git log
- zeigt den kompletten Versionsverlauf (=Liste der Commits) für den aktiven Branch angit status
git fetch
- alle neuen Branches vom Git-Server ladengit fetch
git pull
- alle Commits vom Git-Server herunterladen (führt automatisch ein git fetch aus)git pull
git pull origin master
git pull origin [Branch]
git push
- erzeugte Commits auf den Git-Server hochladengit push
git push origin master
git push origin [Branch]
git branch
- einen neuen Branch anlegengit branch [Name des Branches]
git checkout -b [Name des Branches]
git checkout
- in einen bestehenden Branch bzw. auf einen bestehenden Commit wechselngit checkout [Name des Branches]
git checkout [Commit-Hash]
git branch -d
- einen Branch löschengit branch -d [Name des Branches]
git merge
- Branches zusammenführen bzw. mergengit merge [Name des Branches]
Falls es Dateien gibt, die du nicht zu deinem Git-Repository hinzufügen bzw. hochladen möchtest, also diese komplett vom Git ignorieren lassen möchtest, kannst du dies mit Hilfe einer sogenannten .gitignore
Datei machen.
Dazu erstellst du einfach eine neue Datei in deinem Git-Repository mit dem Namen .gitignore
, in der du eine Liste von Ausnahmen definieren kannst.
logs/
.DS_Store
vendor/*
*.pem
Wir hoffen dass dir dieser Cheatsheet in Zukunft eine große Hilfe ist.
Viel Spaß damit! 😉
Alina Kessler