Meine Notizen zu Git

Git ist eine moderne plattformübergreifende freie Sourcecodeverwaltungs Software. Git ist sehr flexible und kann auch Offline verwendet werden – lokal auf dem Rechner.

Der Name „Git“ bedeutet in der britischen Umgangssprache so viel wie „Blödmann“. Linus Torvalds erklärte seine Wahl des ungewöhnlichen Namens mit einem Witz sowie damit, dass das Wort praktikabel und in der Softwarewelt noch weitgehend unbenutzt war:

“I’m an egotistical bastard, and I name all my projects after myself. First ‘Linux’, now ‘Git’.”

– Linus Torvalds[6]

https://de.wikipedia.org/wiki/Git

Grundbegriffe

ReposSourcecode-Speicher mit History
CommitsSchappschüsse des Filesystems
Commit HistoryVerkettung der Schnappschüsse / Commits
Root CommitDas allererste Commit
BranchesVerzweigung

Aufbau eines Commits

Filesystem-Schnappschuss
(Files und Verzeichnisse)
Metadaten
(Name, Datum, Kommentar…)
Zeiger auf das letzte Commit
(beim Ersten leer, ansonsten Hashwert des vorhergehenden Commits)
Hashwert
(Aus allen Daten des Commits)

Git – Pointers

HEAD- und MASTER-Pointer zeigen auf den selben Hashwert
1)Head-Pointer
2)Master-Pointer

Basisfunktionen

Version von Git anzeigen:

> git --version
git config –global user.name “<Name>”Festlegen des eigenen Namens
git config –global user.email “<Email>” Festlegen der eigenen Emailadresse
git init <name>Neues Repo mit <name> anlegen
git statusÜberblick über das aktuelle Repo
git add <filename>Änderung hinzufügen (Staging)
git add .Alle neuen Änderungen übernehmen
git commit -m “<Kommentar>”Commit erstellen
git logZeigt History an
git log — onlineZeigt verkürzte History an
git checkout <Hashwert>Wechselt den Head-Pointer auf den Commit mit dem <Hashwert>
git checkout masterSetzt den Head-Pointer wieder auf den Master Branch
git revert <Hashwert> Macht den Commit <Hashwert> rückgänging

Anmerkung: Commit Message wird angezeigt, welche noch geändert werden könnte. Standard Editor VIM mit :qa verlassen
git reset –hard <Hashwert>Abhängen eines Commits aus der History (dangeling)
git branch <name>Neuer Branch erstellen
git branchAlle Branch-Pointer anzeigen
git checkout <Branch-Name>Wechselt in den angegebenen Branch
git merge <Branch-Name> Führt einen merge mit dem <Branch-Name> durch

Mergen – “fast-forward”

  1. git checkout master
  2. git merge <Branch-Name>

Visialisierungen mit GitViz

Head-Pointer zeigt auf einen ältern Commit
Neu erstellter Branch
Branch mit einem neuen Commit

Arbeiten mit Git Remote-Server

PushÜbermittelt lokale Änderungen auf den Server
FetchHolt Änderungen vom Remote-Server ab
Pull Holt Änderungen vom Remote-Server ab und integriert diese im eigenen Code
CloneErstellt eine Kopie auf dem lokalen PC
git clone <URL_Repo>Erstellt eine lokale Kopie des Repos
(Bsp: https://github.com/Readify/GitViz.git)
git remote –verboseZeigt den verwendete Kurzname / URL des Repos an
(Meist: origin)
git pushÜbermittelt die lokalen Commits zum Remote-Server
git pullHolt alle Änderungen vom Remote-Server und merged diese ins lokale Repo

Im Beispiel unten, sehen wir ein Repo mit verschiedenen Git-Pointers:

  • HEAD -> Master enthält Änderungen, welche remote noch nicht vorhanden sind
  • Die Pointers “origin/master” und origin/HEAD sind lokal und remote identisch
  • Es gibt einen Branch “origin/netcore”
  • Es gibt einen Tag 1.0.2.0

Konflikt zwischen Server und lokalem Repo korrigieren

  1. git status -> zeigt an wo die Probleme sind
  2. Problem in den Dateien beheben -> werden durch Kommentare von Git hervorgehoben
  3. git add <Dateiname> -> Änderungen korrigiert
  4. git commit -m “<Bemerkung>”
  5. git push -> Konsolidierte Dateien auf remote Server übertragen

Nützliches

Offizielle Git Webseite https://git-scm.com/

Readify GitViz https://github.com/Readify/GitViz

GitHub – Git cheat sheet https://training.github.com/downloads/de/github-git-cheat-sheet/

Git cheat sheet als PDF https://rhoenerlebnis.de/_upl/de/_pdf-seite/git_cheatsheet_de_white.pdf