WEBVTT

00:00:04.600 --> 00:00:09.700
Wenn ihr beruflich mit Programmierung oder Code 
zu tun habt, dann ist die Wahrscheinlichkeit hoch,  

00:00:09.700 --> 00:00:15.400
dass ihr dort auch mit irgendeiner Form von 
Versionierungssystemen in Berührung kommt. Eins  

00:00:16.420 --> 00:00:20.590
der weitverbreitetsten Protokolle was hierfür 
genutzt wird, ist das sogenannte GIT-Protokoll.  

00:00:20.590 --> 00:00:25.510
Und deswegen möchte ich im Rahmen dieses Kurses 
dieses System euch etwas näher bringen, damit ihr  

00:00:25.510 --> 00:00:31.060
auch hier einen ersten Einblick bekommt. Auf einer 
ganz rudimentären Ebene könnt ihr euch so ein  

00:00:31.060 --> 00:00:35.530
Versionierungssystem ähnlich wie ein Backup-System 
vorstellen. Also wenn ihr zum Beispiel Apple's  

00:00:35.530 --> 00:00:43.030
Time Machine kennt oder Dropbox, Google Drive, 
dort werden Dateien in der Cloud für euch abgelegt  

00:00:43.030 --> 00:00:48.580
und sobald ihr eine Datei bearbeitet wird eine 
neue Version von dieser Datei abgelegt. Ihr könnt  

00:00:48.580 --> 00:00:53.770
dann über ein Interface zwischen den verschiedenen 
Varianten einer Datei wählen und so auch in die  

00:00:53.770 --> 00:00:59.230
Vergangenheit gehen, um dort zum Beispiel etwas 
rückgängig zu machen. Und genau darum geht es  

00:00:59.230 --> 00:01:05.530
im Prinzip auch bei den Versionierungssystemen. 
GIT hat darüber hinaus noch ganz viele weitere  

00:01:05.530 --> 00:01:11.020
Funktionalitäten, die gerade großen Teams 
helfen gemeinsam mit Code zu arbeiten. Aber  

00:01:11.020 --> 00:01:17.200
wir wollen erstmal mit den Basics anfangen. GIT 
beschreibt erstmal das Protokoll, das Technische,  

00:01:17.200 --> 00:01:23.050
wie das Ganze funktioniert und dann gibt es 
verschiedene Anbieter in der Cloud, mit dem  

00:01:23.050 --> 00:01:30.820
ihr dann eure Projekte verwalten könnt. Wir werden 
in diesem Seminar GitHub nutzen. Auf GitHub könnt  

00:01:30.820 --> 00:01:37.690
ihr euch kostenlos einen Account anlegen und 
dort einen ersten Einblick darin bekommen. Die  

00:01:37.690 --> 00:01:43.750
einzelnen Projekte die man auf GitHub oder anderen 
Plattform anlegt, sind sogenannte Repositorien,  

00:01:43.750 --> 00:01:51.070
repositories. Also jedes einzelne Projekt was ihr 
später macht, ist dann ein einzelnes Repository  

00:01:51.070 --> 00:01:57.970
und innerhalb eines repositories kann man dann 
ganz viele Dateien und Ordner ablegen, wo man  

00:01:57.970 --> 00:02:05.290
dann seinen Code strukturieren kann. Und die Idee 
ist ähnlich wie bei solchen Backup-System, das es  

00:02:05.290 --> 00:02:12.190
einmal eine Cloud-Speicherung eures Projektes 
gibt und dann parallel eine lokale Variante  

00:02:12.190 --> 00:02:17.520
habt, die ihr dann tatsächlich zum Arbeiten 
nutzt. Und wie das Ganze funktioniert möchte in  

00:02:17.520 --> 00:02:23.730
den nächsten Slides ein bisschen zeigen. Wir haben 
also diese Repos, die Kurzform von Repository, die  

00:02:23.730 --> 00:02:29.430
wir in der Cloud zum Beispiel bei GitHub anlegen. 
Und wenn wir das Ganze jetzt auf unseren lokalen  

00:02:29.430 --> 00:02:35.010
Rechner holen wollen, gibt es einen Prozess 
der sich "clone" nennt. Also wir klonen das  

00:02:35.010 --> 00:02:40.740
Ganze auf unseren lokalen Rechner und haben damit 
eine Instanz dessen was sonst in der Cloud für  

00:02:40.740 --> 00:02:46.320
uns vorgehalten wird. Wir können aber noch mehr 
machen. Wenn wir zum Beispiel ein interessantes  

00:02:46.320 --> 00:02:51.510
Projekt irgendwo finden und wir daran auf 
unserem eigenen Rechner weiterarbeiten wollen,  

00:02:51.510 --> 00:02:58.020
wir das verändern wollen. Können wir in der Cloud 
einen "fork" erstellen, des Original-Projektes  

00:02:58.020 --> 00:03:03.060
und dann innerhalb dieses "forks" können wir dann 
selber weiter arbeiten an dem Projekt, ohne dass  

00:03:03.060 --> 00:03:08.700
wir das Original-Projekt dadurch beeinflussen. 
Können aber später, wenn wir wollten, sogar unsere  

00:03:08.700 --> 00:03:14.250
Veränderungen dem Original-Projekt zurückspielen. 
Und auch diesen "fork" können wir dann wieder auf  

00:03:14.250 --> 00:03:19.050
unseren lokalen Rechner klonen und dort dann 
entsprechend auf unserem Rechner auch wenn wir  

00:03:19.050 --> 00:03:24.690
offline sind an unserem Projekt arbeiten. 
Das Arbeiten funktioniert folgendermaßen:  

00:03:24.690 --> 00:03:29.160
Also ihr habt jetzt sozusagen ein Projekt geklont. 
Haben das auf eurem Rechner. Da sind verschiedene  

00:03:29.160 --> 00:03:35.700
Dateien drin und jetzt hat sich online 
etwas verändert. Wenn wir diese Veränderung,  

00:03:35.700 --> 00:03:41.790
die online hochgeladen wurde, auf unserer eigenen 
Rechner herunterladen wollen, dann gibt es einen  

00:03:41.790 --> 00:03:47.400
Befehl der sich "pull" nennt. Damit holen wir uns 
alle Aktualisierungen aus der online-version auf  

00:03:47.400 --> 00:03:52.830
unseren lokalen Rechner. Wenn wir auf unserem 
lokalen Rechner die Dateien weiter bearbeiten,  

00:03:52.830 --> 00:03:58.320
haben wir dort auch wieder eine Veränderung und 
wenn wir diese Veränderungen wieder in die Cloud  

00:03:58.320 --> 00:04:03.300
zurückschicken wollen, dann wird dies in "commits" 
gebündelt. Also ihr könnt euch das vorstellen:  

00:04:03.300 --> 00:04:08.700
dann sammelt man sozusagen verschiedene Änderungen 
und die sammelt man in einem sogenannten "commit".  

00:04:08.700 --> 00:04:13.440
Dem "commit" gibt man dann auch einen Namen, 
also man versucht das Ganze so zu beschreiben,  

00:04:13.440 --> 00:04:17.910
dass man das später auch in seinen verschiedenen 
"commits" das wiederfinden kann. Also das man zum  

00:04:17.910 --> 00:04:23.820
Beispiel ein neues Dokument angelegt hat, neue 
Bilder hinzugefügt hat. Und diese fasst man dann  

00:04:23.820 --> 00:04:31.080
in einem "commit" zusammen. Und sobald man dann 
fertig ist, "push" man das ganze in die Cloud,  

00:04:31.080 --> 00:04:39.690
wo das Ganze dann auch für andere verfügbar wird. 
Dazu vielleicht noch so eine Zusatzbemerkung. GIT  

00:04:39.690 --> 00:04:44.250
ist primär für Textdateien gedacht, man kann 
natürlich auch bei GitHub ganz viele Bilder  

00:04:44.250 --> 00:04:50.820
ablegen, die man zum Beispiel in seinem Code dann 
abrufen möchte. Aber die Versionierung von Bildern  

00:04:50.820 --> 00:04:54.750
funktioniert nicht so gut, wie das Versionieren 
von Texten. Bei Texten ist es wirklich so,  

00:04:54.750 --> 00:05:01.230
dass ihr einzelne Textzeilenveränderungen in den 
Dokumenten später identifizieren könnt. Während  

00:05:01.230 --> 00:05:06.060
das bei Bildern nicht ganz so einfach ist, also 
ein bisschen daran denken, dass es primär für eine  

00:05:06.060 --> 00:05:12.840
Verwaltung von Text, von Code gedacht ist. Um das 
Ganze durchzuführen gibt es verschiedene Lösungen,  

00:05:12.840 --> 00:05:18.510
um sozusagen diese Schnittstellen zu bedienen. 
Die einfachste Variante, die wir primär auch  

00:05:18.510 --> 00:05:23.100
in diesem Kurs benutzen werden, ist die Software 
GitHub-Desktop. Die könnt ihr euch kostenlos von  

00:05:23.100 --> 00:05:26.970
der GitHub-Seite herunterladen und ich werde 
auch im nächsten Video euch Beispiele zeigen,  

00:05:26.970 --> 00:05:31.590
wie man diese Software bedient und damit die 
Befehle ausführt, die ich euch in den letzten  

00:05:31.590 --> 00:05:37.800
Slides gezeigt habe. Visual Sutdio Code, den 
Editor, den wir in diesem Seminar benutzen,  

00:05:37.800 --> 00:05:45.900
der hat auch ein GIT-Erweiterung. Eine Erweiterung 
mit der wir all diese Befehle direkt innerhalb  

00:05:45.900 --> 00:05:49.860
des Editors durchführen kann. Werde auch 
hierzu euch ein kleines Video hochladen,  

00:05:49.860 --> 00:05:53.370
weil dies natürlich dann noch wesentlich 
effizienter ist, als jedes mal in diese  

00:05:53.370 --> 00:05:59.850
Desktop-Anwendung wieder wechseln zu müssen. Leute 
die schon tiefer und länger mit GIT arbeiten,  

00:05:59.850 --> 00:06:03.450
die benutzten gar keine grafischen 
Benutzeroberflächen mehr, sondern machen  

00:06:03.450 --> 00:06:08.400
alles über die Kommandozeile. Hierfür werde ich 
euch ein paar Tutorials verlinken, aber nicht ein  

00:06:08.400 --> 00:06:14.910
eigenes Video hier nochmal im Seminar erstellen, 
weil dies eher die fortgeschrittene Variante ist.