Initialisieren eines git-Projektes
Es gibt natürlich für git auch GUIs (Graphical User Interfaces). Wenn man aber die Funktionsweise von git noch nicht kennt, dann können die dortigen vielfältigen Konfigurationsmöglichkeiten leicht etwas verwirrend wirken. Deshalb verwenden wir im Folgenden erst einmal ausschließlich die Konsole, um git zu bedienen und dessen grundsätzliches Funktionsprizip kennen zu lernen.
Anschließend gehen wir dann aber auch noch auf die Möglichkeit ein, git durch Frontends mit GUI zu bedienen.
Testverzeichnis erzeugen und initialisieren
Zunächst erzeugen wir ein Testverzeichnis und initialisieren es für git mit dem Befehl:
git init test-projekt
Nun wechseln wir in dieses Verzeichnis mit cd (change directory):
cd test-projekt
Der folgende Befehl ls (list) gibt den Inhalt des Verzeichnisses inklusive der verborgenen Dateien aus:
ls -la
(Die Option -l steht dabei für "long", also für ausführliche Ausgabe; die Option -a steht für "all", also auch die verborgenen Dateien.)
Beachte das Unterverzeichnis .git, in welchem sowohl der Index als auch das lokale Repository gespeichert werden.
Testdatei erzeugen und einchecken
Nun erzeugen wir eine Test-Datei mit dem Inhalt "Version 1":
echo "Version 1" > test-datei.txt
Der Befehl echo gibt einen String auf der Konsole aus. Der Befehl > leitet die Ausgabe in die angegebene Datei um.
Wir überzeugen uns von dem Inhalt der Testdatei mit dem Befehl cat (concatenate):
cat test-datei.txt
Nun fügen wir die Testdatei dem Index hinzu mit:
git add test-datei.txt
Anschließend checken wir noch den Index in das lokale Repository ein mit dem Befehl:
git commit -m "v1 erstellt"
Mit der Option -m (message) wird die eingecheckten Version mit einem Nachrichtentext versehen, der sich später wieder auslesen lässt.
AnmerkungWenn git zum ersten mal verwendet wird, dann muss man vor dem Commit noch seine Identität konfigurieren. Dies geschieht mit den folgenden beiden Befehlen:
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
Die Option ``--global'' bewirkt, dass die Angaben zukünftig für alle Repositories gelten sollen. Wird sie weggelassen, so gelten sie lediglich für das aktuelle Repository. Bei jedem durchgeführten Commit werden neben der Commit-Message auch diese beiden Angaben zur eigenen Identität mit abgespeichert, um anderen Entwickler:innen die Möglichkeit zu geben, bei Fragen oder Problemen Kontakt aufzunehmen.
Inhalt Arbeitsverzeichnis, Index und lokales Repository
Nun überprüfen wir den Inhalt der Datei im Arbeitsverzeichnis, Index und im lokalen Repository mit den folgenden Befehlen: Arbeitsverzeichnis:
cat test-datei.txt
Index (Die Option -p steht für "pretty-print"):
git cat-file -p :test-datei.txt
Lokales Repository (Mit HEAD wird das lokale Repository adressiert, näheres hierzu später):
git cat-file -p HEAD:test-datei.txt
Die Ausgabe sollte in allen drei Fällen dieselbe sein, nämlich "Version 1".
Um uns im Folgenden Tipparbeit zu ersparen, definieren wir noch eine Konsolen-Funktion mit dem Befehl:
ausgabe-status() {
echo "HEAD: $(git cat-file -p HEAD:test-datei.txt)"
echo "Index: $(git cat-file -p :test-datei.txt)"
echo "Arbeitsverzeichnis: $(cat test-datei.txt)"
}
Damit können wir nun bequem den Inhalt aller drei Bereiche ausgeben mit dem Befehl (beachte den Aufruf ohne die runden Klammern):
ausgabe-status
Die Ausgabe auf der Konsole sollte nun lauten:
HEAD: Version 1
Index: Version 1
Arbeitsverzeichnis: Version 1
Aufgabe 1
Erzeuge ein lokales Repository mit dem Namen ``crypt''. Implementiere anschließend folgende Phython-Funktionen und checke sie mit der Commit-Message ``Version 1'' ein:
def deleteSpaces(text):
""" Loescht alle Leerzeichen aus dem uebergebenen String text
>>> deleteSpaces('Trafen sich Caesar und Cicero')
'TrafensichCaesarundCicero'
def inCapitals(text):
""" Wandelt den uebergebenen String in Grossbuchstaben um
>>> inCapitals('CaesarrauchteeineCigaretteundCiceroeineCigarre')
'CAESARRAUCHTEEINECIGARRETTEUNDCICEROEINECIGARRE'
def caesarCryptLetter(letter, key):
""" Verschluesselt den Buchstaben letter mit dem Schluessel key
""" mittels der Caesarverschluesselung
>>>caesarCryptLetter('A','D')
'D'
>>>caesarCryptLetter('U','D')
'X'
def caesarDecryptLetter(letter, key):
""" Entschluesselt den Buchstaben letter mit dem Schluessel key
""" mittels der Caesarverschluesselung
>>>caesarCryptLetter('D','D')
'A'
>>>caesarCryptLetter('X','D')
'U'
Aufgabe 2
Recherchiere, was das Sprichwort "Jemandem ein X für ein U vormachen" bedeutet und woher es kommt.