Git
🚧 | Diese Seite befindet sich in Bearbeitung | 🚧 |
Was ist Git?
"Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency." - Git-Homepage
Was genau heißt das?
Git ist ein Tool, das mittels Versionskontrolle die Entwicklung und Verwaltung von Softwareprojekten ermöglicht. Es wird z.B. verwendet um in Teams Software zu entwickeln, Versionen von Software zu tracken und zu verwalten oder um einfach ein Backup von Softwareprojekten zu ermöglichen. Das funktioniert, indem Git zentral auf einem Git-Management-Server, ein sogenanntes Repository, hält, in dem es nicht nur den Projektcode, sondern auch ganz viele Metainformationen wie beispielsweise Versionen speichert. Auf dieses Repository (Repo) kann von überall wo es Internet gibt zugegriffen werden, was das Teilen dieses stark erleichtert.
Wofür nutzen wir Git?
In dieser Lehrveranstaltung wird Git verwendet um Aufgaben abzugeben und zu verwalten. Für jede der Abgaben wird dabei ein eigenes Repository angelegt, welches den Code hält und wieder heruntergeladen werden kann. Einen tieferen Einblick in Versionskontrolle mit Git gibt es in der Vorlesung Softwaretechnik 1.
In diesem Artikel werden lediglich die, zum Arbeiten mit Artemis, notwendigen Grundlagen vermittelt.
Der Git Lifecycle
Jede Datei ist in Git in einem bestimmten Zustand. Folgende Zustände existieren:
- untracked
Git weiß, dass die Datei existiert, trackt aber keine Änderungen, beachtet sie also auch nicht in zukünftigen Commits - unmodified
Git trackt Änderungen auf der Datei, es gibt aber noch keine seit dem letzten Commit - modified
Git tracked die Datei und sie wurde seit dem letzten Commit verändert - staged
Die veränderte Datei ist bereit um committet zu werden
Zwischen den Zuständen kann mit bestimmten Befehlen und Operationen hin- und hergewechselt werden:
Wichtige Befehle
- git clone <repository URL>
Lädt ein Repository von einem Git-Management-System herunter. Dieser Befehl wird benötigt um in Programmieren die Vorlage der Aufgabe herunterzuladen - cd <directory-name>
Navigiert in der Konsole in das Verzeichnis, das gerade durch git clone <> geklont wurde - git add <Dateienname>
Fügt die Datei zu den "staged files" hinzu, um sie im nächsten Schritt committen zu können. Mit 'git add .' können alle modifizierten Dateien im aktuellen und den Unterverzeichnissen in die "staging area" verschoben werden. Dieser Befehl ist empfohlen um keine Dateien in einer Abgabe zu vergessen - git commit -m "Commit message"
Fasst alle gestageten Dateien zu einem Commit zusammen. Commits sind semantisch zusammengehörige Blöcke von Änderungen. Der Versionskontrollteil von Git speichert den Projektzustand zu jedem Commit. Das ermöglicht es also im Nachhinein das Projekt im Zustand jedes Commits zu betrachten und zu diesem Zustand zurückzukehren. Zu jedem Commit gehört eine Commit-Message. In ihr werden Änderung dieses Commits im Vergleich zum Vorherigen beschrieben. - git push
Lädt alle commit auf das Git-Management-System hoch. In Artemis werden nach jedem Push die automatisierten Tests ausgeführt. Ein 'git push' gibt also die Aufgabe ab. Es ist empfohlen den Code regelmäßig abzugeben, da dieser dann auf dem Git-Management-System zwischengespeichert ist und ggf. als Backup dienen kann. - git status
Zeigt Informationen über den aktuellen Zustand des Repositories an. Zum Beispiel welche Dateien gerade getrackt und modifiziert sind, ob alle Commits hochgeladen sind und vieles mehr. Dieser Befehl ist sehr praktisch, wenn nicht genau klar ist, in welchem Zustand welche Datei gerade ist.