Git – verteilte Versionskontrolle (DistributedRevisionControlSystems)

Dies ist auf jedenfall ein Blogeintrag wert! Auch wenn Git Mitte 2005 von Linus Torvalds entwickelt wurde und eigentlich schon durch den Mainstream gezogen ist, möchte ich es hier noch einmal aufgreifen.
Was Versionskontrolle ist, werden die Programmier sicherlich wissen. Für die, die es nicht sind bzw. es nicht wissen, können hier mehr zur Versionskontrolle nachlesen.
RVS, CVS und SVN sind nicht mehr auf dem Zahn der Zeit. Die neuen verteilten Versionskontrollsysteme ziehen mit den Vorteilen auf… das sie schnell sind, Neuerungen bzw. Patches müssen/können/sollten vorher durch einen Maintainer kontrolliert werden, das System arbeitet dezentral um Performance & Bandbreite zu sparen und andererseits bei einem Ausfall die ganze Entwicklung am Leben zu erhalten und zu guter letzt man mit dem Notebook auch Offline commiten/branchen/taggen kann.
Dies lässt sich ganz einfach dadurch erklären, dass jeder Benutzer sein eigenes Repository auf der Festplatte. Natürlich gibt es sogenannte ‚zentrale‘ Repositories wie zum Beispiel GitHub. GitHub ist ein “Social Code Hosting” (Nachfolger von SourceForge), was quasi ein Sozial Network für Coder ist. Hier kann jeder Quellcode hochladen, den von anderen einsehen (sofern Rechte gesetzt), forken, … und wieder Änderungen von anderen in den eigenen Code zu integrieren. Man kann natürlich auch Problemlos seinen Code umziehen bzw. woanders veröffentlichen.
Bei GitHub sind momentan recht viele Projekte gehostet wie zum Beispiel der Linux Kernel, Perl, Gnome, Qt, Ruby on Rails, Android, Wine, Fedora, Debian, X.org, VLC, Git und viele mehr.

Happy git’n

Installation
Mac OS X, Linux (falls nicht schon installiert ;)), Windows

Repository Einrichten

    Liste der Einstellungen
    git config –list
    Namen und Benutzer einrichten
    git config –global user.name „Mein Name“
    git config –global user.email email@addy.net
    git config –global color.ui „auto“
    git config –global pack.threads „0“

Projekt im Repository erstellen
cd /Path/To/Git/Project

Git Projekt initialisieren (in dem Verzeichnis)
git init

Überprüfen ob es geklappt hat
ls -a
> .git

Commit
git add .
git commit -m „erster commit“

Hinzufügen
git add NeueDateien…

Entfernen
git rm AlteDateien…

Umbenennen
git mv AlteDateil NeueDatei

Log
git log

Reset Liste
git reset –hard SHA1_HASH

Repository clonen
git clone git://server/path/to/files

Änderungen vom zentralen Repository ziehen
git pull

Änderungen auf das zentrale Repo schieben
git push

Änderungen des letzten commit’s
git diff

SVN checkout
git svn clone https://fishbox.svn.sourceforge.net/svnroot/fishbox fishbox
git svn fetch –all https://fishbox.svn.sourceforge.net/svnroot/fishbox fishbox

Links

http://de.wikipedia.org/wiki/Git / http://git-scm.com/
Kurs für SVN’er
http://de.wikipedia.org/wiki/Mercurial / http://mercurial.selenic.com
Podcast CRE130 [Empfehlung]

Cheat sheet’s

SVG: http://ktown.kde.org/~zrusin/git/git-cheat-sheet.svg
PNG’s:
http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png
http://ktown.kde.org/~zrusin/git/git-cheat-sheet-large.png

cheat.errtheblog.com

http://jan-krueger.net/development/git-cheat-sheet-extended-edition

http://www.ivy.fr/mercurial/ref/v1.0/

Dann noch… Happy Coding!