Git

Aus Wikizone
Wechseln zu: Navigation, Suche

Git [ɡɪt] ist eine freie Software zur verteilten Versionsverwaltung von Dateien, die durch Linus Torvalds initiiert wurde.

Links

https://git-scm.com/
https://www.youtube.com/watch?v=elh1y6laO8I Schönes Beginner Tutorial
https://git-scm.com/book/de/v2 //Ausführliches freies eBook
https://de.wikipedia.org/wiki/Git
GitHub - GitHub ist ein Onlinedienst, der Software-Entwicklungsprojekte auf seinen Servern bereitstellt (Filehosting). Namensgebend war das Versionsverwaltungssystem Git. 

Was ist Git ?

Git ist ein verteiltes Versionsverwaltungssystem. Wenn man etwas alleine oder im Team programmiert, kann man alle Änderungen nachträglich verfolgen, Rückgängig machen, Varianten erstellen (Branches) Varianten zu einer neuen Version verschmelzen (merge) etc.

Git kann aber auch für andere Textdateien verwendet werden (z.B. Songtexte verwalten)

Git hat u.a. folgende Eigenschaften

  • Nicht lineare Entwicklung
    • Branching und Merging - Werkzeuge zum Erstellen von Codevarianten und verschmelzen von mehreren zu einem neuen.
  • Kein zentraler Server
    • Nutzer haben lokale Kopien des Repository inkl Versionsgeschichte (history)
  • Datentransfer zwischen Repositories
    • Git kann verschiedene Protokolle nutzen (file, http(s), ssh, ftp, git)
    • file:// kann für den lokalen Transfer auf dem Rechner genutzt werden
    • git:// wird oft für Lesezugriffe (für fetch und clone) genutzt
    • ssh:// wird oft für Schreibzugriffe im Netz genutzt.
  • Sicherheit der History
    • Über einen Hashbaum wird sichergestellt, dass die Versionsgeschichte nachträglich nicht geändert werden kann.
  • Versionierung über alle Dateien.
    • Bei Gib bekommen bei der Änderung einer Datei alle Dateien im Projekt eine neue Versionsnummer.

Git Quickstart

Als Beispiel legen wir ein Verzeichnis legen wir einen Ordner mit dem Namen Songtexte an und erstellen zwei Dateien mit Songtexten. Z.B.

azzurro.txt
we-are-the-champions.txt

Installation von git

Über https://git-scm.com laden und installieren

Projekt mit Git verwalten

Wichtig für Git ist die Kommandozeile. Es gibt auch GUIs aber man sollte die Commandline Befehle einigermaßen beherrschen.

  • Terminal öffnen und in das Projektverzeichnis wechseln
git init .

Erzeugt im aktuellen Verzeichnis (aktuell = .) einen .git Ordner. Dieser ist das Repository in dem alle Änderungen gespeichert werden. Das aktuelle Verzeichnis ist dein Workspace. Dort kannst du ganz normal arbeiten.

Git Status

Mit

git status

Schauen wir welche Änderungen es im Verzeichnis gibt, die noch nicht von git erfasst bzw. versioniert sind. Das sind im Moment noch alle.

Dateien im Repository Tracken und Versionieren - ADD & COMMIT

Mit add kann man git dazu bringen Dateiverläufe zu verfolgen (tracken) und mit commit kann man Versionsstände dieser Dateien festhalten.

git add azzurro.txt we-are-the-champions.txt

oder auch mit Jokern

git add *.*

Wenn man jetzt den Status abruft zeigt git an, das die Dateien getrackt werden aber noch neu und nicht commited sind.

Änderungen verwalten

Hat man etwas im Projekt verändert sieht man mit einem erneuten git status welche Dateien sich verändert haben und mit git diff zeigt git einem die genauen Änderungen an.

git status
git diff

Passt alles können wir die Datei wieder fürs committen adden und dann den Commit durchführen

git add azzurro.txt
git commit

Datei auf den letzen Stand zurücksetzen

Sehen wir mit unserem git diff, dass wir Änderungen gemacht haben die wir nicht wollen, können wir die Datei auf den letzen Versionsstand zurücksetzen:

git checkout we-are-the-champions.txt

Git User Profildaten Konfigurieren

Nicht schön im Beispiel: Git hat als User einen automatisch aus dem Mac Nutzerprofil generierten Namen erzeugt. Man kann aber auch selbst einen globalen Usernamen mit dazugehöriger E-Mail erzeugen:

git config --global user.name "Stephan Schlegel"
git config --global user.email dev@stephanschlegel.de

Editor konfigurieren

Der Editor der von Git aufgerufen wird ist nicht jedermanns sache. Möchte man Ihn ändern gibt es zwei Wege entweder über das User Config File direkt oder üer das Terminal. Hier der zweite Weg:

Terminal:

git config --global core.editor "nano"

Konfiguriert nano als Standard Editor

Wenn der Editor ein externes Fenster öffnet und nicht im Terminal ausgeführt wird, muss man git sagen es soll warten bis der Editor gespeichert und das File geschlossen hat. Sonst gibt es beim Commit eine Fehlermeldung, das keine Message vom Editor kam. Dazu nutzen wir die -w Option.

git config --global core.editor "atom -w"

Wichtige Befehle

Repository anlegen

git init . 

Status

git status
git status -s #shortversion

Dateien Tracken / Stagen

git add myfile.ext
git

Dateien Unstagen

git checkout myfile.ext

Unterschiede anschauen

# diff der unstaged Änderungen
git diff
# diff der staged Änderungen
git diff --staged

Commit (Versionieren)

git commit

Konfiguration

git config --global user.name "Stephan Schlegel"
git config --global user.email dev@stephanschlegel.de
git config --global core.editor "nano"
git config --global core.editor "atom -w"

.gitignore

In einer .gitignore Datei kann man mit Suchmustern regeln, welche Dateien vom Repository ignoriert werden sollen.

Beispiele für Regeln:



# ignore Files ending wich the tilde (often used for temporary Files
*~

# ignore all .a files
*.a

# ignore files ending with .o or .a (objects archives)
*.[oa]

# but do track lib.a, even though you're ignoring .a files above
!lib.a

# only ignore the TODO file in the current directory, not subdir/TODO
/TODO

# ignore all files in any directory named build
build/

# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt

# ignore all .pdf files in the doc/ directory and any of its subdirectories
doc/**/*.pdf

Online Dienstleister

Github
Bitbucket
Gitlab