% master: grundbegriffe.tex
% Grundbegriffe v0.1
% 2017-01-09 (Rx)

\section{Grundbegriffe}
%----------------------

\begin{verbatim}
Versionkontrollsystem (Version Control System, VCS)
        Eine Versionsverwaltung ist ein System, das zur Erfassung von Änderungen
        an Dokumenten oder Dateien verwendet wird.
        Zum Beispiel:
        Zentrale Systeme - zentraler Server
                RCS-Revision Control System, CVS-Concurrent Versions System,
                SVN-Subversion
        Verteilte Systeme - Kein zentraler Server
                Bazaar, Darcs, Fossil, Git, GNU arch, Mercurial, Monotone
Repository
        Nutzt Git als Dantenbank in der die verschiedenen Zustände jeder Datei
        eines Projektes über die Zeit hinweg ablegt. Jede Änderrung wird als
        Commit verpackt und abgespeichert.
Working Tree
        Das Arbeitsverzeichnis von Git, oft auch Working Directory genannt.
Commit
        Das speichern der veränderten Dateien im Repository.
HEAD
        Eine symbolische Referenz auf den neusten Commit im aktuellen Branch.
SHA-1
        Der Secure Hash Algorithm erstellt eine eindeutige, 160 Bit lange
        Prüfsumme. Alle Commits in Git werden nach ihrer SHA-1-Summe benannt,
        die aus dem Inhalt und den Metadaten des Commits errechnet wird.
Objektmodell
        Ein Git-Repository lässt sich als Graph von Commits modellieren, der
        durch Git-Kommandos manipuliert wird.
Index
        Der Index ist eine Zwischenstufe zwischen Working Tree und Repository,
        in der Sie einen Commit vorbereiten. Enthält also die Dateien für den
        nästen Commit.
Clone
        Wenn Sie sich ein Git-Repository aus dem Internet herrunterladen.
        Enthält die gesamte Versionsgeschichte einschließlich aller Commits.
Branch
        Eine Abzweigung in der Entwicklung. Zum Beispiel für neue Featurs,
        Release vorbereitung oder alte Versionen mit Bugfixes zu versorgen.
master
        Beim Initialisieren eines neuen Repositorys wird der Branch master
        erstellt analog trunk in anderen Systemen.
Tag
        Tags sind symbolische Namen für schwer zu merkende SHA-1-Summen.
        Wichtige Commits, wie zum Beispiel Releases v1.2.3. oder können
        zusätzliche Metadateien wie Autor, Beschreibung und GPG-Signatur
        enthalten.
\end{verbatim}
