Es ist soweit. Neue Firma, neue Projekte und endlich auch mal Zeit und die Möglichkeit ein neues Versionierungssystem auszuprobieren. Nach VSS und SVN fällt diesmal die Entscheidung auf Git.
Warum Git?
Einfache Antwort: Es ist in den Medien und verspricht eine schnelle, einfache Lösung vor allem für kleine Entwicklertruppen und Projekte zu sein. Meine Anforderungen sind
- lokale Änderungen überwachen zu können
- eventuelle Distribution zu anderen Entwicklern
- zurückmergen/push in einen Master Branch
Installation
The Beginning…
Die Geschichte zu Git werde ich mir hier sparen, viel eher werde ich erklären welche Schritte ich vorgenommen habe, um es auf meiner Win7 Kiste zum Laufen zu bekommen und wie ich mein erstes Projekt damit versioniere.
Auf der Homepage von Git finden sich unter Tools eine Auflistung aktueller Programme die den Umgang mit dem System leichter machen bzw. überhaupt ermöglichen. Daneben auch ein Tool, welches sehr vertaut klingt -> TortoiseGit. Da ich früher schon mit TortoiseSVN gearbeitet habe, fällt die Entscheidung nicht schwer, vor allem verspricht das Tool auch eine vollständige Implementierung des Git Protokolls
.
TortoiseGit
Ich habe mir das aktuelle Release heruntergeladen und installiert, und mich an die Empfehlungen des Installers gehalten ->
- TortoisePlink statt OpenSSH
- Standard Installationsordner
Super, nach einem Neustart (sicher ist sicher), befinden sich die gewohnten Menüs von TortoiseSVN eben für GIT im Windows Kontextmenü. Damit ist es allerdings noch nicht getan. Um TortoiseGit nutzen zu können, muss trotzdem noch Git installiert werden. In diesem Fall Git für Windows.
Git for Windows
Git für Windows ist die eigentliche Versionsverwaltungssoftware und kann über die Google Code heruntergeladen werden.
Für die Installation habe ich mich an die Vorgaben von TortoiseGit gehalten:
- TortoisePlink statt einer SSH Implementierung
- Adjusting Path Environment wählte ich die 2te Option “Run Git from the Windows Command Prompt”
- und zu guter Letzt: “Checkout as-is, Commit as-is”
Soweit so gut, alles installiert, gilt es das erste Repository anzulegen.
Mein erstes Repository
Los gehts. Die Projektstruktur ist klar: unter D:\dev liegen meine Projekte unter anderem schon die ersten Files zu meinem Testprojekt “TestGit”. Dann mal die Git Settings ansehen. Kontextmenü auf und zu TortoiseGit>Settings.

TortoiseGit > Settings
Unter Name vergebe ich meinen Standard Developer Nick und eine EmailAdresse unter der ich erreichbar bin falls jemand Fragen zu einer Revision hat. Somit wäre die Grundsätzliche Konfiguration abgeschlossen. Ab zum ersten Projekt.
Rechte Maustaste auf das Verzeichnis D:\dev\TestGit und auf das Kontextmenü “Git Create Repository here“. Daraufhin wird man gefragt ob man ein leeres Verzeichnis ohne Working Copies erstellen möchte -> mache ich nicht. Ein Abschliessender Dialog gibt bekannt dass der Master Branch angelegt wurde.

Git Create Repository Dialog 1

Git Create Repository Dialog 2 - Finish
Das Repository ist erstellt und im Grunde wars das dann auch schon. Jetzt können Dateien hinzugefügt und bearbeitet werden.
Dazu erstelle ich einfach eine Testdatei, test.txt im Verzeichnis TestGit.

Testdatei test.txt erstellen
Abschliessend machen wir unseren Initial Commit der die Datei zum Repository hinzufügt mit dem Kontextmenübefehl “Git Commit -> “Master”" auf das Projektverzeichnis TestGit.

TortoiseGit Commit mit Kommentar
Als Kommentar für den ersten Commit vergebe ich “initial commit”, optional könnte man es durch Klick auf den Button “Sign” noch mit den eingegebenen Developerdaten (Name und Emailadresse) unterschreiben.
Nicht vergessen die Datei test.txt auszuwählen und OK zu drücken. Fertig.
Git Push
Mit git push kann man ein Repository bzw. dessen Änderungen in den Master Branch zurückmergen. Git erstellt dazu ein Patch File mit den Änderungen, was Zeit spart da nicht die ganzen Dateien mitgeschickt werden.
Dieses Patch File kann man übrigens auch per Mail an den Zuständigen Repository Verwalter schicken, der die Änderungen zB Reviewen kann und merged.
Probleme beim Push
In manchen Fällen bekommt man beim Push eine Fehlermeldung wie diese hier:
branch is currently checked out
Das kommt vor, wenn man selbst ein Repository anlegt, das Repository aber dann nochmal an einem anderen Platz auf seinem Rechner oder einem anderen Rechner klont. Für Git arbeitet man dann auf beiden Repositories mit gleichem Namen zur gleichen Zeit, und das lässt Git sinnvollerweise nicht zu.
Die Lösung des Problems ist einfach: Einfach auf das Remote Repository ein Switch/Checkout auf einen neuen Branch machen (z.B: Branch_Master). Dann funktioniert auch das zurückpushen.
Fazit
Ok, das war jetzt ein Fast Forward durch die Installation und die Handhabung von Git für Windows. Jetzt gilt es auch einen Plan zu Entwickeln wo man den Master ablegt und wie die Änderungen dann von den Entwicklern wieder retour gemerged werden können. Die Grundidee von Git, dass man eine komplette lokale Kopie des Repositories besitzt und eigentlich nicht auf eine Internetverbindung angewiesen ist und trotzdem Änderungen committen kann finde ich sehr verlockend und spannend.