Einführung git Flashcards
Vermeidbare Probleme bei der Arbeit mit Daten, Dokumenten, Programmcode, Belegarbeiten:
(Versionsverwaltung
WIESO, WESHALB, WARUM?)
- Letzte Version gelöscht
- In welcher Datei befindet sich der letzte Arbeitsstand
- welche Änderungen wurden vorgenommen
- Kontrolle einer älteren Version nicht möglich
Probleme im Team:
(Versionsverwaltung
WIESO, WESHALB, WARUM?)
- Welche Version in einer lokalen Kopie passt zu der anderen Version einer anderen einer lokalen Kopie
- Änderungen überschreiben
- Änderungsprotokoll
Motivation:
(Versionsverwaltung
WIESO, WESHALB, WARUM?)
-gemeinsames Arbeiten an Dokumenten
-bei Änderungen sollen abhängige Dokumente konsistent gehalten werden
-Entwicklung der Dokumente nachvollziehbar mit Möglichkeit auf ältere Stände zurück gehen zu können
-Softwareentwicklung ohne Kenntnisse zu Version Control Systems praktisch
unmöglich
Ansatz:
(Versionsverwaltung
WIESO, WESHALB, WARUM?)
- Alle gemeinschaftlich genutzten Dokumente (bei Teamarbeit) und
- Alle sich ändernden Dokumente, Quellcodes, usw. werden in einem (gemeinsamen) Datenspeicher (Begriff: Repository ) gehalten
- jeder Nutzer erhält entsprechende Rechte zum Zugriff auf die Dokumente indem Datenspeicher
Standardverhalten:
(Versionsverwaltung
WIESO, WESHALB, WARUM?)
-Sally und Harry arbeiten am selben Dokument A zur selben Zeit.
-Beide führen verschiedene
Änderungen an ihren lokalen Kopien durch.
-Harry speichert seine Änderungen als Erster.
-Sally speichert ihre Änderungen ebenfalls,
aber kurze Zeit später.
-Harrys Änderungen sind für immer verloren,
weil überschrieben.
https://ibb.co/pX1wW1D
Lösungsmöglichkeit 1: Sperren
Versionsverwaltung
WIESO, WESHALB, WARUM?
Mögliche Nachteile -Entsperren vergessen -lange Wartezeiten -Wenn zwei Nutzer ein Dokument an verschiedenen Stellen ändern möchten, könnten sie dies auch ohne Sperren gleichzeitig tun
Lösungsmöglichkeit 2: Kopieren Ändern Mischen:
(Versionsverwaltung
WIESO, WESHALB, WARUM?)
https://ibb.co/7V6GmP6
Wertung
-Durch Mischen der Versionen können Sally und Harry (resp. mehrere Nutzer) auf
einem Dokument schreiben, aber:
-Was, wenn sich Sallys und Harrys Änderungen überlappen?
=> Konflikt
Konflikte
- werden automatisch erkannt
- können mit entsprechenden Werkzeuge angezeigt werden
- endgültige Änderungen müssen durch einen Nutzer manuell gewählt werden
=> evtl. Absprachen mit anderem Nutzer erforderlich
Praxis
Die meisten nebenläufigen Änderungen an einem Dokument sind konfliktfrei
=> entsprechendes System: Versionsverwaltung (VCS)
z.B.
CVS , Subversion SVN ), git
git (Allgemeiner Überblick (1/4))
Software zur ( Versionsverwaltung von
- Dokumenten,
- Quelltexten,
- ganzen Projekten und derer Metadaten,
- sowie Binärdaten (s.a. Git LFS)
-Betriebssystemunabhängig und agnostisch zur Arbeitsumgebung
git speichert im “unsichtbaren“ Ordner git des Projektverzeichnisses, dem
Repository , dafür u.
-die versionierten Inhalte zerlegt in Form von Binärdaten ( objects
-eine vollständige Historie der gespeicherten Arbeitsstände
-Metadaten & Konfiguration
git (Allgemeiner Überblick (2/4))
Bearbeitungsstände werden durch sog. Commits gekennzeichnet und
Bearbeitungszweigen, den sog. Branches zugeordnet.
-„Absatz zur DSGVO
-„Formatierung des Dokuments
-„Klick Event zur Karte hinzugefügt.“
Sie werden so Teil einer nachvollziehbaren Versionshistorie (Log, o.a. History
und erhalten eine
-selbstgewählte Beschreibung (Beispiele siehe voriger Punkt),
-Metadaten (Autor, beteiligte Autoren, Zeitstempel, …)
-und einen universal eindeutigen, unabänderbaren Hash Wert (SHA).
Der Hash Wert errechnet sich aus Commit Inhalt, Datum und bisheriger Historie.
Commits können über ihren SHA Identifikator aus der Historiewiederhergestellt werden.
git (Allgemeiner Überblick (3/4))
Branches , also Bearbeitungszweige, können individuell „ausgecheckt“,
unabhängig voneinander weiterentwickelt und
schließlich wieder per mergezusammengeführt werden.
Als Hauptzweig der Entwicklung hat sich per Konvention der Name master
durchgesetzt.
Nebenzweige die zur Implementierung einer Funktion dienen, bezeichnet man
als „ Feature branches
- include dsgvo
- text formatting
- map click event
Jedes Git Repository eines Projektes ist „beschreibbar“. Änderungen müssen
nicht zwangsweise an eine (zentrale) Instanz übermittelt werden.
-Master Master Replikation
git (Allgemeiner Überblick (4/4))
Commits können zwischen beliebig vielen Repositories ausgetauscht werden.
- Bei lokalen Daten spricht man hier vom lokalen Repository,
- entfernte Repositories werden als Remotes bezeichnet.
Ein neues Repository von einem bestehenden Stand abzuleiten bezeichnet manals „ klonen”
Ein Repository von einem bestehenden abzuleiten, um dieses abgeleitete (zumindest temporär) als Haupt Repository zu bearbeiten, bezeichnet man als
“forken”
Per Konvention beschreibt Origin ein zentrales, entferntes Repository, von dem
der lokale Klon abgeleitet wurde. Upstream beschreibt ein entferntes Repository
mit gewisser “Autorität“, zumeist verwaltet durch die ursprünglichen Autoren
einer Entwicklung.
-Bspw. kann ein Team Repository als Upstream , ein eigener Fork als Origin bezeichnet werden.
git (Nomenklatur) auch deutsch :D für welche Wörter sind wichtig!
Working tree
Arbeitsstand im Projektverzeichnis inkl. aller lokalen Änderungen
Index,Staging area –
„Bühne“ um Änderungen für den nächsten Commit vorzumerken
Commit versionierter Arbeitsstand (Snapshot ) mit eindeutigem Identifikator (SHA) und Beschreibung
Branch
Bearbeitungszweig, i.d.R. bezeichnet master den Hauptzweig der Entwicklung
HEAD
Zeiger , der auf den aktuellen lokalen Branch zeigt (so weiß git , welcher
Bearbeitungszweig gerade aktuell ist)
Tag
markierter Commit um lauffähige Zwischenstände einer Entwicklung zu kennzeichnen
History, Log
Logbuch aller Änderungen in einem Repository
Remote
entfernte Repositories , sowohl auf anderen Computern oder in einem anderen
Verzeichnis;
typisch origin für eigenen zentralen Server oder Fork , upstream für den ursprünglichen Autor oder Maintainer
git (Werkzeuge)
Clients
- Kommandozeile
- GUI Clients, z.B. GitKraken , SmartGit , Atlassian Source Tree ,
- IDE Integration: Egit Eclipse ), NetBeans Plugin
- Git integriert in die Dateiverwaltung des Betriebssystems: TortoiseGit
Cloud Hosting
- GitHub.com, BitBucket.com, GitLab.com uvw . (evtl.
- GitLab Server der Fakultät (Open
Prinzip Git
Erste Schritte und Kommandos (lokal 1)
https://ibb.co/m4VGDBy
pull/push -> Neue Version anlegen: commit
und mit Kurztext beschreiben(commit message) ->Dateien für neue Version vormerken: add -> Dateien ändern/anlegen
Erste Schritte und Kommandos (lokal 2)
https://ibb.co/BjCkWvS
Konsolenkommandos
git konfigurieren
-Identität festlegen
>git config global user.name “Sally Wonderful
>git config global user.email sw@example.com
Kontrolle
>git config list
Hilfe
>git help
>git help kommando
z.B.
>githelpconfiggit
alternativ mit TortoiseGit
git konfigurieren mittels TortoiseGit (Fortsetzung)