Einchecken mit add und commit
Nun schauen wir uns die Befehle add und commit genauer an. Wir gehen von dem Zustand unseres Projektes aus dem letzten Unterkapitel aus, dass also sowohl im Arbeitsverzeichnis als auch im Index und im lokalen Repository unsere Testdatei den String "Version 1" enthält. Der Aufruf von ausgabe-status sollte also ergeben:
HEAD: Version 1
Index: Version 1
Arbeitsverzeichnis: Version 1
Einchecken vom Arbeitsverzeichnis in den Index
Zunächst überschreiben wir den Inhalt der Testdatei mit dem Befehl:
echo "Version 2" > test-datei.txt
Mit ausgabe-status können wir kontrollieren, dass sich tatsächlich nur der Inhalt der Testdatei im Arbeitsverzeichnis geändert hat. Die Anzeige sollte nun sein:
HEAD: Version 1
Index: Version 1
Arbeitsverzeichnis: Version 2
Anschließend checken wir die Datei aus dem Arbeitsverzeichnis in den Index ein mit:
git add test-datei.txt
Der Zustand des Projektes ist nun also:
HEAD: Version 1
Index: Version 2
Arbeitsverzeichnis: Version 2
Einchecken vom Index ins lokale Repository
Nun checken wir auch noch den Inhalt des Index' ins lokale Repository ein mit dem Befehl:
git commit -m "v2 eingecheckt"
Der Zustand des Projektes ist damit nun:
HEAD: Version 2
Index: Version 2
Arbeitsverzeichnis: Version 2
Einchecken vom Arbeitsverzeichnis in Index und lokales Repository gleichzeitig
Zunächst überschreiben wir wieder den Inhalt unserer Testdatei im Arbeitsverzeichnis:
echo "Version 3" > test-datei.txt
Mit dem folgenden Befehl kann man die Testdatei gleichzeitig in den Index und ins lokale Repository einchecken:
git commit test-datei.txt -m "v3 eingecheckt"
Eine Kontrolle mit ausgabe-status sollte nun den folgenden Zustand unseres Testprojektes anzeigen:
HEAD: Version 3
Index: Version 3
Arbeitsverzeichnis: Version 3
Interaktive Visualisierung
Auf der Seite Visualizing Git Concepts with D3 kann man interaktiv visuell aufbereitet verfolgen, wie sich das Auschecken auf die Position von HEAD im Baum des lokalen Repositories auswirkt.
Und hier gibt es noch einen weiteren Playground für git.
Aufgabe 1
Erweitere das Programm aus Aufgabe 1 des letzten Unterkapitels um die folgenden Funtkionen und checke sie jeweils mit der angegebenen Commit-Message in das lokale Repository ein:
Version 2:
def caesarCrypt(text, key):
""" Verschluesselt den Buchstaben letter mit dem Schluessel key
""" mittels der Caesarverschluesselung
>>>caesarCrypt('QUARTAMELEMENTORUMLITTERAMIDESTDPROAETPERINDERELIQUASCOMMUTET','D')
'TXDUWDPHOHPHQWRUXPOLWWHUDPLGHVWGSURDHWSHULQGHUHOLTXDVFRPPXWHW'
>>> caesarVerschluesselung('TAUSCHTMANDENVIERTENBUCHSTABENALSODFUERAAUSUNDEBENSOMITDENRESTLICHEN','D')
'WDXVFKWPDQGHQYLHUWHQEXFKVWDEHQDOVRGIXHUDDXVXQGHEHQVRPLWGHQUHVWOLFKHQ'
def caesarDecrypt(text, key):
""" Verschluesselt den Buchstaben letter mit dem Schluessel key
""" mittels der Caesarverschluesselung
>>>caesarCrypt('TXDUWDPHOHPHQWRUXPOLWWHUDPLGHVWGSURDHWSHULQGHUHOLTXDVFRPPXWHW','D')
'QUARTAMELEMENTORUMLITTERAMIDESTDPROAETPERINDERELIQUASCOMMUTET'
>>> caesarVerschluesselung('WDXVFKWPDQGHQYLHUWHQEXFKVWDEHQDOVRGIXHUDDXVXQGHEHQVRPLWGHQUHVWOLFKHQ','D')
'TAUSCHTMANDENVIERTENBUCHSTABENALSODFUERAAUSUNDEBENSOMITDENRESTLICHEN'
Version 3:
def vigenereCrypt(text, key):
""" Verschluesselt den Buchstaben letter mit dem Schluessel key
""" mittels der Caesarverschluesselung
>>> vigenereCrypt('DASVIGENEREVERFAHRENGALTLANGEZEITALSUNKNACKBAR','INFSCHULE')
'LNXNKNYYIZRAWTMUSVMALSNAFLROREWKAUWWCAPFCJEMEZ'
def vigenereDecrypt(text, key):
""" Verschluesselt den Buchstaben letter mit dem Schluessel key
""" mittels der Caesarverschluesselung
>>> vigenereCrypt('LNXNKNYYIZRAWTMUSVMALSNAFLROREWKAUWWCAPFCJEMEZ','INFSCHULE')
'DASVIGENEREVERFAHRENGALTLANGEZEITALSUNKNACKBAR'