Home > Mac OS X, Webprogrammierung, Wissenswertes > GIT für Umsteiger (SVN, MacOS X, SnowLeopard, SubVersion)

GIT für Umsteiger (SVN, MacOS X, SnowLeopard, SubVersion)

January 7th, 2011 Leave a comment Go to comments

“(…) anybody who disagrees is stupid and ugly (…)”

Git unter MacOS X mit GIT-OSX-Installer installieren oder selbst kompilieren:

  1. Selbst installieren:
    Download des entsprechenden Pakets von http://code.google.com/p/git-osx-installer
    Installation durchführen
  2. 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
  3. Kontrolle:
    which git sollte /usr/local/bin/git liefern
    git –version liefert die installierte Version
  4. 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)

  1. Einen kostenlosen Account unter http://github.com einrichten
  2. GitHub mit einem eigenen Public key versorgen (damit die Authentifizierung klappt) siehe Anleitung unter http://help.github.com/mac-key-setup/
  3. Ein kostenloses öffentliches GIT-Repository anlegen (für unsere weiteren Tests)
  4. 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:

  1. http://de.wikipedia.org/wiki/Git
  2. http://www.macnotes.de/2010/01/06/git-auf-mac-os-x-teil-1-installation
  3. http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
  4. http://www.asconix.com/howtos/mac-os-x/git-mac-os-x-howto
  5. http://progit.org/book/
  6. https://git.wiki.kernel.org/index.php/GitFaq
  7. http://whygitisbetterthanx.com
  8. http://git.or.cz/course/svn.html
  1. Ronni
    January 9th, 2011 at 15:04 | #1

    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 ;-)

  1. No trackbacks yet.