ebook img

Git for Beginners PDF

37 Pages·2017·12.67 MB·German
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Git for Beginners

Git for Beginners Vermittlung von komplexen Themen mit Hilfe von interaktiven Web -Tutorials am Beispiel der Versionierung mit Git Bachelorthesis von Lennart Hildebrandt Interfacedesign Fachhochschule Potsdam Wintersemester 2017 s r e n n gi e B r o t f Gi Git for Beginners Bachelorarbeit zur Erlangung des akademischen Grades Bachelor of Arts im Fachbereich Interface­ design an der Fachhochschule Potsdam Eingereicht von Lennart Hildebrandt Betreut von Prof. Constanze Langer Prof. Dr. Marian Dörk Berlin, Januar 2018 I — II s ni h c ei z r e v s t al h n I Inhaltsverzeichnis Einleiten 1 Entwerfen 35 Designziele 35 Handlung 37 Begriffsdefi nitionen 46 Navigation 49 Text und Aufgaben 49 Informieren 4 Visualisierung 50 Interaktive Konsole 57 Versionierung 4 Git 6 Kommandozeile 14 DDiisskkuuttiieerreenn 59 AAuussbblliicckkeenn 61 AAnnhhäännggeenn 63 Orientieren 18 Web­Tutorials 19 Nutzertest 25 Explorable Explanations 29 III — IV n e t ei Einleiten nl Ei In den letzten Jahrzehnten sind Computer in Form von Desk­ Funktionen zur kollaborativen Arbeit an Dateien zur Verfügung. top­PCs, Laptops, Tablets und Smartphones in viele Bereich Git ist eine dieser Versionsverwaltungen, die standardmäßig unseres täglichen Lebens vorgedrungen, egal ob beruflich oder über die Kommandozeile3 gesteuert wird. Trotz hoher Populari­ privat. Betrachtet man alleine die Nutzung der Computer in tät in der Softwareentwicklung4 scheint die Software außerh alb Deutschland im beruflichen Kontext, so geben 2016 91 %1 der dieser Szene jedoch kaum bekannt. Unternehmen an, dass PCs zum Einsatz kämen. Insgesamt sind Das ist verwunderlich, ruft man sich die Zahlen der genutzten es in Deutschland 2017 89 %2 der Befragten, die regelmäßig Computer im privaten und beruflichen Kontext vor Augen und einen Computer nutzen. die Tatsache, dass viele bereits eine einfache Methode der Ver­ sionsverwaltung über Dateinamen betreiben. Bei der Nutzung all dieser Computer entsteht vor allem eines: Und selbst analoge Abschriften lassen Daten. In Form von Dateien speichern wir alles ab, was nicht auf Dafür verantwortlich könnte eine flache Lernkurve sein, denen sich über einen Scanner in Bilddateien echtem Papier entstanden ist. Von Liebesbriefen zu Rechnun­ sich Anfänger beim Lernen von Git gegenüber sehen. Schaut auf unserem Computer sichern. gen, von Fotos zu Videos, von Code zu Illustration und Design. man sich bestehende Web­Tutorials zum Thema Git genauer an5, Die Anzahl der Dateiformate scheint endlos. werden Erfahrungen mit der Kommandozeile vorausgesetzt, um mit Git arbeiten zu können. Zudem sind die Darstellungsmög­ So schnell, wie Dateien am Rechner entstehen, so schnell lichkeiten innerhalb der Kommandozeile beschränkter als über gehen sie jedoch auch wieder verloren. In einem Interview ein erweitertes, grafisches Interface. Begriffe, wie Staging Area mit neun Befragten gab jeder der Probanden/­innen an, Siche­ oder Repository sind vielen Nutzern/­innen neu und lassen sich rungskopien von Dateien über verschiedene Datei­ oder Ordner­ nicht intuitiv aus bekannten Datensicherungs­Modellen ablei­ namen und häufig auf externen Speichermedien anzufertigen. ten. Vorteile und richtige Nutzung erschließen sich möglicher­ Zusammen mit der Cloud können solche Sicherheitskopien weise ebenfalls erst nach längerer Verwendung von Git. auch auf einem entfernten Server im Internet gespeichert und mit anderen geteilt werden. In meiner Arbeit möchte ich deshalb überprüfen, wie ein Inter­ Doch gerade durch die zunehmende kollaborative Arbeit an face helfen kann, komplexe Inhalte, wie das Erlernen von Git, Dateien über das Internet ist ein Datenverlust auch über die interaktiv erfahrbar und verständlich zu vermitteln. Über einen Cloud nicht ausgeschlossen. Versehentliches Bearbeiten alter Nutzertest mit bestehenden Web­Tutorials sammle ich Erkennt­ Versionen und fehlende Abmachungen innerhalb des Teams nisse über Probleme im Erlernen der Software. Im Web­Tutorial sind weitere Gründe, warum Dateien in einer manuellen Verwal­ “Git for Beginners” zeige ich, wie gewonnene Erkenntnisse in tung verloren gehen können. den Aufbau von interaktiven Lerninhalten und die Darstellung der Begriffszusammenhänge und Zustände in Git einbezogen Eine automatische Organisation von Versionen bieten hingegen werden können, wie Anfängern/­innen ein einfacher Einstieg in Versionsverwaltungen. Neben der Möglichkeit, ältere Versio­ ein komplexes Thema wie der Versionierung mit Git ermöglicht nen wieder herzustellen, stellen diese meist auch erweiterte werden kann. 1 Statista: Anteil der Unternehmen in Deutschland mit Nutzung von Computern in den Jahren 2005 bis 2016. 27.11.2017. https://de.statista. com/statistik/daten/studie/151762/umfrage/anteil-der-unternehmen-mit- 3 Erklären → Kommandozeile nutzung-von-computern-in-deutschland/ 4 Cade Metz: How GitHub Conquered Google, Microsoft, and Everyone Else. 2 Statista: Anteil der Computernutzer* in Deutschland von 2004 bis 2017. 3.12.2015. https://www.wired.com/2015/03/github-conquered-google- 27.11.2017. https://de.statista.com/statistik/daten/studie/3102/umfrage/ microsoft-everyone-else/ quote-der-computernutzer-in-deutschland-seit-2004/ 5 Orientieren → Web-Tutorials 1 — 2 g n u r e ni o si r e V datei_v1 datei_v2 datei_v3 datei_v4 datei_v5 datei_v6 datei_v7 datei_v8 datei_v9 datei_v10 datei_v11 datei_v12 → n e r e mi r Abb. 2: Versionierung von Dateien o Informieren über Dateinamen Inf → Versionierung Mit Versionierung ist eine systematische Speicherung und Organisation von Änderungen einer Datei gemeint.6 Viele ver­ wenden eine manuelle Versionierung bereits, indem Dateien und Ordner kopiert und beispielsweise mit einem Datum oder einer Versionsnummer (v1, v2, v3, usw.) versehen werden (Abb. 2).7 Eine derartige Versionierung ist einfach eingerichtet und genutzt. Doch gerade in der Arbeit mit mehreren Teilnehmern/­innen, in der Versionen beispielsweise über eine Cloud gesichert werden, ist die Gefahr des Datenverlusts hoch. Eine gute und zuver­ lässige Kommunikation zwischen den Teilnehmern/­innen ist notwendig, um nicht versehentlich zur gleichen Zeit an den gleichen Dateien zu arbeiten. Abb. 3: Fehlerdialog in Microsoft Abb. 1: Versionierung ist wichtig. Programme wie Microsoft Offi ce sperren die Bearbeitung von Offi ce (links) Dateien völlig, wenn diese bereits von anderen Teilnehmern/­in­ Abb. 4: “Auto Save”-Funktion in nen bearbeitet werden (Abb. 3). Die in Sketch eingebaute Sketch (rechts) Autosave­Funktion, über die eine geöffnete Datei regelmäßig 6 Wiktionary: Versionierung. 30.11.2017. https://de.wiktionary.org/wiki/ Versionierung 7 Chacon, S. & Straub, B. (2014): Pro Git. New York: Apress. S. 1 3 — 4 t Gi → n e → Git er mi r o Die nachfolgende Abhandlung zu Git ist in großen Teilen eine nf I Zusammenfassung der auch auf der Webseite von Git referen­ Datei Version 12 Version 11 Version 10 Version 9 Version 8 Version 7 Version 6 Version 5 Version 4 Version 3 Version 2 zierten Dokumentation “Pro Git” (Abb. 6). Sowohl die Erläu­ terungen in diesem Buch, als auch im später vorgestellten Versionsdatenbank Tutorial “Git for Beginners” nutzen diese Dokumentation als Hauptreferenz. Git ist eine Software zur Versionsverwaltung, die 2005 von Linus Abb. 6: “Pro Git” von Scott Chacon Abb. 5: Versionierung über eine Torvalds9 entwickelt wurde. Torvalds entwarf 1991 die erste and Ben Straub (2014), New York: Versionsd atebank Apress Version des Linux­Kernels10, die Basis für Betriebssysteme wie gespeichert wird, kann entgegen der eigentlichen Intention Ubuntu oder MacOS, an dem er bis heute aktiv mitentwickelt. schnell zu Datenverlust führen (Abb. 4). Wirft ein Teilnehmer einen schnellen Blick in eine ältere Version und nimmt tempo­ Nach der Einführung von Git zur Verwaltung des Linux­Kernels räre Änderungen vor, ist die Ursprungsdatei möglicherweise gewann die Software in der Entwicklerszene schnell an Popula­ überschrieben und verloren. rität11. Zusammen mit Plattformen wie Github12 und Bitbucket13 fand sie vor allem im Bereich der Open­Source­Entwicklung Versions verwaltung8 immer häufiger Einsatz. Gute Performance und ein solides Abb. 7: Git-Logo System zur Arbeit im Team sind weitere Gründe, warum die Versionsverwaltungen sind Systeme, mit denen Änderungen an Software gegenüber Vorgängern wie Apache Subversion (SVN)14 einer oder mehreren Dateien gesichert und zu einem späteren oder Mercurial15 schnell zum Marktführer avancierte.16 Zeitpunkt wieder hergestellt werden können. Hierbei werden in einer Versionsdatenbank (Abb. 5) neben den Dateien auch Zeit Dezentrale Versionsdatenbank17 und Autor/­in gespeichert, sodass ein genauer Änderungsver­ lauf sichtbar gemacht werden kann. Entgegen der klassischen In einer zentralen Versionsverwaltung wie SVN werden alle Methode der Versionierung über Dateinamen bietet diese Art Versionen eines Projekts in einer einzigen zentralen Versions­ der Verwaltung ein klares System, wie Versionen einer Datei datenbank gespeichert. Neue oder alte Versionen werden stets oder eines gesamten Projektes gesichert und wieder hergestellt in diese Datenbank hoch­ oder von dieser heruntergeladen. werden und wie man in der gemeinsamen Arbeit an einem Pro­ jekt Versionen verwalten und zusammenführen kann. Zwar finden Versionsverwaltungen vor allem im Bereich der 9 Wikipedia: Linus Torvalds. 30.11.2017. https://de.wikipedia.org/wiki/Linus_ Torvalds Softwareentwicklung Anwendung, theoretisch kann eine 10 Wikipedia: Geschichte von Linux. 30.11.2017. https://de.wikipedia.org/wiki/ Versionsverwaltung aber jede Art von Datei sichern. Sie ist Geschichte_von_Linux daher auch für die Verwendung in anderen Bereichen, wie der 11 RhodeCode: Version Control System Popularity in 2016. 30.11.2017. https:// Forschung, der Politik, des Projektmanagements oder Designs, rhodecode.com/insights/version-control-systems-2016 12 Github. https://github.com/ interessant. 13 Bitbucket. https://bitbucket.org/ 14 Apache Subversion. https://subversion.apache.org/ 15 Mercurial. https://www.mercurial-scm.org/ 16 Chacon, S. & Straub, B. (2014): Pro Git. New York: Apress. S. 5 8 Chacon, S. & Straub, B. (2014): Pro Git. New York: Apress. S. 1 17 Chacon, S. & Straub, B. (2014): Pro Git. New York: Apress. S. 3-4 5 — 6 Version 1 Version 2 Version 3 t Gi → n e r e mi r o Patch 1 Patch 2 Datei A nf I Version 3 Version 2 Version 1 Versionsdatenbank Server Patch 1 Patch 2 Patch 3 Datei B Datei Version 3 Version 2 Version 1 Datei Version 3 Version 2 Version 1 Patch 1 Patch 2 Datei C Versionsdatenbank Versionsdatenbank Versionsdatenbank Abb. 9: Versionen werden als einzelne Nutzer/-in A Nutzer/-in B Änderungen (Patches) in der Versions- datenbank gespeichert. Abb. 8: Dezentrale Versionsdatenbank wird zwischen allen Teilnehmer/-innen Version 1 Version 2 Version 3 und dem Server geteilt. Git verwendet hingegen eine dezentrale Versionsverwaltung. Hierbei existieren neben einer Versionsdatenbank auf einem zentralen Server weitere voll funktionsfähige Datenbanken auf den Systemen aller Teilnehmer/­innen. Dies hat diverse Vorteile. Jede Kopie dieser Versionsdatenbank A1 A1 A2 Datei A ist beispielsweise gleichzeitig auch eine Sicherung aller Versio­ nen, die in dieser abgelegt wurden. Geht die Versionsdatenbank auf dem entfernten Server verloren, kann diese einfach von einer Kopie eines Nutzers wiederhergestellt werden. Zudem können Teilnehmer/­innen auch ohne Internetverbin­ B1 B2 B3 Datei B dung an dem Projekt arbeiten und neue Versionen erstellen. Diese können dann zu einem späteren Zeitpunkt mit dem zen­ tralen Server und anderen Teilnehmern/­innen synchronisiert werden. Eine dezentrale Versionsverwaltung nutzt darüber hinaus viele Informationen direkt aus der Versionsdatenbank der Teilneh­ C1 C2 C2 Datei C mer/­innen, ohne eine Internetverbindung zu benötigen. Eine Versionsdatenbank Abb. 10: Versionen werden als Historie aller Versionen eines Projekts ist so beispielsweise Momentaufnahmen aller Dateien eines schneller abgerufen als in einer zentralen Verwaltung. Projekts gespeichert. 7 — 8 t Gi → n e r Speicherung von Versionen18 Aufbau19 e mi r o Ältere Versionsverwaltungen wie SVN speichern Versionen Git ist in drei wesentliche Bereiche unterteilt, in der sich nf I in Form von sogenannten Patches (Abb. 9). Diese Patches Dateien befinden können (Abb. 12): speichern die genauen Änderungen innerhalb der Dateien und → Die Working Directory stellt den Ordner dar, in dem sich alle dokumentieren, was entfernt oder hinzugefügt wurde. Dateien des Projekts befinden und in den Git initialisiert oder Legen Nutzer/­innen in Git eine neue Version in der Versions­ in welchen ein bestehendes Git­Projekt von einem entfern­ datenbank an, wird hingegen eine Momentaufnahme des ten Server kopiert wurde. Abb. 11: Git vergleicht Inhalte von gesamten Projekts gespeichert (Abb. 10). Nicht geänderte → In der Staging Area werden neue, geänderte oder gelöschte Dateien zeilenweise. Dateien werden dabei nicht erneut aufgenommen, sondern als Dateien abgelegt, die Teil der nächsten Version werden sol­ Verweis auf die Datei aus der vorigen Version gesichert. len. Sie kann genutzt werden, um aus einer größeren Menge Diese Art der Speicherung hat einen entscheidenden Vorteil geänderter Dateien einzelne Versionen zu erstellen und so gegenüber Versionsverwaltungen wie SVN, da es einen einfa­ zusammenhängende Änderungen zu gruppieren. chen und schnellen Wechsel zwischen Versionen des Projekts erlaubt. Git muss nicht Patches miteinander vergleichen und → Das Repository befindet sich im versteckten .git­Ordner über diese den Inhalt der Dateien zur ausgewählten Version innerhalb des Projekts und beinhaltet neben der Versions­ berechnen, sondern hat die entsprechende Version des Pro­ datenbank andere Informationen wie dem aktuellen Branch20. jekts bereits als Momentaufnahme in der Datenbank abgelegt. Es wird kopiert, wenn wir ein Projekt von einem zentralen Server kopieren. Ein zeilenweiser Vergleich ist bei Ob eine Datei geändert wurde, bestimmt Git, sofern möglich, binären Dateien, wie Bildern oder zeilenweise über die Inhalte einer Datei (Abb. 11). Dies erlaubt Alle drei Bereiche befinden sich lokal auf dem System der Nut­ Word-Dokumenten, nicht möglich. Nutzern/­innen nicht nur, präzise Änderungen an einer Datei zer/­innen. Dabei wird nur das Repository mit anderen Teilneh­ Hier vergleicht Git lediglich die Zeit, zu der die Datei zuletzt verändert wurde. nachzuverfolgen und zurückzusetzen. Auch wenn mehrere Per­ mern/­innen ausgetauscht. Es bietet sich also an, wenn möglich sonen an einer Datei arbeiten, fügt Git Änderungen beider Teil­ immer mit reinen Text-Dateien zu nehmer/­innen zeilenweise zusammen. Erst wenn beide Teil­ Eine neue Version21 arbeiten. nehmer/­innen gleiche Zeilen geändert haben, kommt es zum Soll eine neu Version erstellt werden, durchlaufen Dateien Konflikt, der händisch aufgelöst werden muss. Diese Art eines alle drei der oben genannten Bereiche. So werden Dateien Konflikts ist aber gerade durch den zeilenweisen Vergleich ein­ und somit die aktuelle Version in der Working Directory, dem facher zu lösen als bei einem Vergleich der gesamten Datei. Projektordner, hinzugefügt, geändert oder gelöscht. Danach wählen Nutzer/­innen selektiv aus, welche Dateien sie zur neuen Version hinzufügen wollen, indem sie diese zur Staging Area hinzufügen. Daraufhin legen Nutzer/­innen neue Version an, indem sie die ausgewählten, geänderten Dateien in der Ver­ sionsdatenbank, dem Repository, sichern. 19 Chacon, S. & Straub, B. (2014): Pro Git. New York: Apress. S. 8 20 Erklären → Git → Branches 18 Chacon, S. & Straub, B. (2014): Pro Git. New York: Apress. S. 6 21 Chacon, S. & Straub, B. (2014): Pro Git. New York: Apress. S. 3, 17 9 — 10 Nutzer/-in A Cloud/Server Nutzer/-in B Git → n e r Commit e mi r o Versionen im Repository werden Commit genannt. Wie auch in nf anderen Versionsverwaltungen enthält ein Commit zusätzlich Version 1 I zur Momentaufnahme des Projekts auch das Datum, den Namen und E­Mail­Adresse der Autoren/­innen (Abb. 12). Wird ein neuer Commit aus der Staging Area heraus erstellt, wird dieser Version 2 außerdem mit einem Schlüssel versehen, der aus all den oben genannten Informationen generiert wird und später vom Nutzer bei Eingaben in die Konsole referenziert werden kann. Version 2 Nichtlineare Arbeit Nichtlineare Arbeit ermöglicht mehreren Teilnehmern/­innen eines Projektes, gleichzeitig an verschiedenen Teilen des Pro­ Version 3 jekts zu arbeiten (Abb. 14). In der Softwareentwicklung bedeutet dies beispielsweise, dass Entwickler/­innen eine neue Funktion entwickeln, während andere Fehler der aktuell veröffentlichten Version 3 Version beheben. Versionsverwaltungen unterstützen nich­ Abb. 13: Lineare Arbeit im Team. Zwei tlineare Arbeitsweise, indem Nutzer/-innen bauen Änderungen auf- einander auf. beide Teile unabhängig von­ einander eingepfl egt und kontrolliert zusammenge­ ID: 8d650c führt werden können. Date: 08-12-2017 Nutzer/-in A Cloud/Server Nutzer/-in B Autor: John Abb. 12: Jeder Commit wird unter anderem mit einem eindeutigen Hash, Version 1 einem Datum und dem entspre- chenden Autor gespeichert. Version 2 Version 3 Version 4 Abb. 14: Nichtlineare Arbeit im Team. Zwei Nutzer/-innen machen parallel Änderungen an einer Datei und führen diese zu einem späteren Zeitpunkt wieder zusammen. 11 — 12 e eil z o d n → Kommandozeile2³ a m master m o newFeature Die Steuerung von Git erfolgt standardmäßig über die Kom­ K → mandozeile.24 In einer Kommandozeile, häufi g auch Konsole n e Abb. 15: Branches in Git. Jedes Repo- genannt, können Nutzer/­innen mit verschiedenen Program­ er sitory wird standardmäßig mit einem men ihres Computers interagieren, indem sie verschiedene mi “master”-Branch ausgestattet. or Textbefehle in ein Eingabefeld eingeben. nf I Branches22 Git unterstützt nichtlineare Arbeit in Form von Branches, die einen Ast, eine Kette von Versionen, eine Kette von Commits darstellen. Jedes neue Projekt wird automatisch mit einem master­Branch angelegt, der häufi g als Hauptversion des Pro­ jekts verwendet wird. Nutzer/­innen können außerdem beliebig viele weitere Branches mit beliebigem Namen anlegen. Durch die besondere Art der Speicherung von Momentaufnah­ Abb. 16: Kommandozeilen-Befehle im men kann Git schnell und einfach zwischen Branches hin und Terminal (macOS) GGeesscchhiicchhttee her wechseln, ohne dass Änderungen verloren gehen. Teilneh­ mer/­innen bekommen so die Möglichkeit, gleichzeitig an völlig Inspiriert von der Kommunikation über Fernschreiber, in der verschiedenen Versionen des Projekts zu arbeiten und ohne Menschen einzelne Zeilen Text über weite Entfernung aus­ Risiko neue Lösungsansätze auszuprobieren. tauschen konnten, sollten erste, in den 60er­Jahren entwi­ ckelte Computer eine Seite dieses Dialoges übernehmen. Die 23 Wikipedia: Command-line interface. 5.12.2017. https://en.wikipedia.org/wiki/ Command-line_interface 22 Chacon, S. & Straub, B. (2014): Pro Git. New York: Apress. S. 43 24 Chacon, S. & Straub, B. (2014): Pro Git. New York: Apress. S. 9 13 — 14

Description:
“Git for Beginners” zeige ich, wie gewonnene Erkenntnisse in den Aufbau von 7 Chacon, S. & Straub, B. (2014): Pro Git. New York: Apress. S. 1.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.