„(…) 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
Warum machst Du GIT, steigst Du von SVN um, oder probierst
Du es zuerst mal aus? Soweit ich das überblicke bringt es vor allem
bei Open Source Projekten mit vielen Entwicklern Vorteile. Oder ist
für Dich das Hauptargument die github Platform? Wir nutzen SVN für
Webprojekte, aber haben auch selten mehr als 3-5 Entwickler an
einem Projekt. Wir kommen damit eigentlich ganz gut klar, und mit
der Versionsapp gibt es auch einen schönen Client den auch Grafiker
bedienen können 😉