“(…) anybody who disagrees is stupid and ugly (…)”
Git unter MacOS X mit GIT-OSX-Installer installieren oder selbst kompilieren:
- Selbst installieren:
Download des entsprechenden Pakets von http://code.google.com/p/git-osx-installer
Installation durchführen
- oder den Quellcode runterladen und GIT selbst frisch kompilieren (XCode benötigt)
sudo mkdir /usr/local/src
cd /usr/local/src
sudo curl -O http://kernel.org/pub/software/scm/git/git-1.7.3.tar.bz2
sudo tar xjvf git-1.7.3.tar.bz2
sudo rm git-1.7.3.tar.bz2
cd git-1.7.3
sudo ./configure –prefix=/usr/local
sudo make
sudo make install
- Kontrolle:
which git sollte /usr/local/bin/git liefern
git –version liefert die installierte Version
- GIT konfigurieren
git config –global user.name “Dein echter Name”
git config –global user.email DeineMail@Adresse.org
git config –global core.autocrlf false
git config –global core.savecrlf false
GitHub (optional)
- Einen kostenlosen Account unter http://github.com einrichten
- GitHub mit einem eigenen Public key versorgen (damit die Authentifizierung klappt) siehe Anleitung unter http://help.github.com/mac-key-setup/
- Ein kostenloses öffentliches GIT-Repository anlegen (für unsere weiteren Tests)
- Zugriff testen (z.B. mit ssh git@github.com)
Ein erstes lokales Repository erstellen:
mkdir test
cd test
git init
Gegenprobe: ls -A sollte ein Verzeichnis .git liefern
Ein Repository von Remote (z.B. GitHub) auschecken:
mkdir test
cd test
git remote add origin git@github.com:ACCOUNTNAME/REPOSITORYNAME.git
git push origin master
Eine Datei neu anlegen, zur Versionsverwaltung hinzufügen und mit Nachricht einchecken (lokal):
cd test
touch newfile.txt
git add newfile.txt
git commit -m “Mein erster Commit”
git remote add origin git@github.com:ACCOUNTNAME/REPOSITORYNAME.git
git push origin master
Die Historie anzeigen:
git log oder auch grafisch mit gitk
oder mit git show-branch –more=10
oder git log –graph –abbrev-commit –pretty=oneline
Aufgepasst: SubVersion verwendet für jeden Commit eine Revisionsnummer beginnend von 1..n. Git verwendet SHA-1 Hashes stattdessen!
Details in der Historie anzeigen:
git show
git show HASH
git show HASH –pretty=fuller
Auf Änderungen prüfen: git status
Alle Dateien im aktuellen Ordner rekursiv hinzufügen: git add . (der Punkt steht für den aktuellen Ordner)
Hinzugefügte Dateien entfernen (Gegenteil von git add): git rm –cached path/to/the/folder_or_file
Dateien umbenennen (Kombination aus remove und add): git mv ALTERNAME NEUERNAME
Differenzen anzeigen: git diff oder auch git diff HASH1 oder auch git diff HASH1 HASH2 (wobei HASH der SHA1-Hash des Commits ist – er besteht min. aus 8 Zeichen)
Grafisches Interface:
gitk
oder auch git gui
Verfügbare Branches zeigen: git branch
Branch anlegen: git branch BRANCHNAME
Branch löschen: git branch -d BRANCHNAME
Branch verwenden: git checkout BRANCHNAME
Master verwenden: git checkout master
Merge von Branch BRANCHNAME auf master: git checkout master; git merge BRANCHNAME
In die Vergangenheit reisen: git checkout HASH
Zum aktuellen Stand reisen (HEAD revision): git checkout master oder auch git checkout BRANCHNAME
Einzelne Datei auschecken: git checkout FILENAME (falls FILENAME identisch mit einem BRANCHNAME: git checkout — FILENAME)
Durchgeführte Änderungen komplett verwerfen: git reset -hard
Tag (Markierung) anlegen: git tag -m “NACHRICHT” TAGNAME HASH
Repository aufräumen (Garbagecollection): git gc
GIT und SubVersion verbinden: git svn help
Bedeutung des .GIT Verzeichnisses:
Beinhaltet das Repository komplett (im Gegensatz zu SVN). Besteht aus “object store” (BLOBs, Trees, Commits und Tags) und “index” und “config”.
Bedeutung von SHA1:
160 bit Werte (20 Bytes) darstellbar als 40-stellige Hexadezimalwerte. Verwendet als eindeutiger Hashwert für Objekte im “object store” (Objektidentifier).
Datei anhand des Hashes aus dem “object store” laden: git cat-file -p HASH
Vollen Hash anhand Teilstring herausfinden: git rev-parse HASHBEGINPART
Wichtige Unterschiede zwischen SubVersion (SVN) und GIT:
GIT verwaltet nicht Dateien und Ordner sondern deren Inhalte auf Basis von SHA1-Hashes. GIT ist sehr schnell und extrem kompakt. GIT ist dezentral.

Quellen:
- http://de.wikipedia.org/wiki/Git
- http://www.macnotes.de/2010/01/06/git-auf-mac-os-x-teil-1-installation
- http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
- http://www.asconix.com/howtos/mac-os-x/git-mac-os-x-howto
- http://progit.org/book/
- https://git.wiki.kernel.org/index.php/GitFaq
- http://whygitisbetterthanx.com
- http://git.or.cz/course/svn.html