Gesetze in Git

Manchmal gibt es seltsame Ideen, wie z.B. sämtliche Gesetze in ein Git Repository zu packen. Was auf den ersten Blick skurril klingt, hat aber durchaus einen interessanten Nebenaspekt. So kann man bereits heute die Gesetze im Internet einsehen. Das Git Repository hat allerdings den Vorteil, dass man nun auch die Änderungen der Gesetzte verfolgen kann. Wer sich das ganze anschauen möchte findet das Repository unter https://github.com/bundestag/gesetze.

Weitere Informationen gibt es unter:
http://www.golem.de/news/bundesgit-ein-git-repository-fuer-deutsche-gesetze-1208-93709.html

git ready

Eine schöne Seite über Git ist sicherlich http://gitready.com/ bzw. deren deutsches Äquivalent welches unter http://de.gitready.com/ zu finden ist. Dort gibt es Tipps rund um Git in kleinen handlichen und leicht verständlichen Artikeln. Die Tipps sind dabei in Kategorien (Anfänger, Fortgeschrittene Anfänger und Fortgeschrittene) unterteilt, so das man sich zuerst an die einfacheren Themen herantasten kann und so Stück für Stück sein Wissen über Git erweitern kann.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Git

git add rückgängig machen

Unter Git kann man mittels:

git add test.txt

eine Datei dem Repository hinzufügen. Beim nächsten:

git commit

befinden sich die entsprechenden Dateien dann im Repository. Möchte man nun aber eine bestimmte Datei im Commit doch nicht hinzufügen, so geschieht dies mittels:

git reset test.txt

Beim anschließenden Commit wird diese Datei dann nicht mehr berücksichtigt.

Weitere Informationen gibt es unter:
http://stackoverflow.com/questions/348170/undo-git-add-before-commit

Dateien von einem in ein anderes Git Repostory überführen

Man nehme die Git Repositories A und B:

A
|_.git
|_file01.txt
|_file02.txt
|_file03.txt

B
|_.git
|_Zeugs
|_image01.txt
|_image02.txt
|_image03.txt

Im Verzeichnisbaum sieht das ganze dabei so aus:

*
|_A
|_B

Nun soll der Inhalt des Repositories B im Repository A landen. Wichtig hierbei ist das die History erhalten bleiben soll. Dazu legen wir in Repository A einen Branch an und laden das Repository B in diesen. Im Repository A öffnen wir eine Konsole und geben dort folgendes ein:

git remote add other ../B
git fetch other
git checkout -b tmpBranch other/master
git checkout master
git merge tmpBranch
git branch -d tmpBranch
git remote rm other
git push                           

Sollte es nach dem „merge tmpBranch“ zu Konflikten kommen, so müssen diese gelöst werden und das ganze dann mittels „git commit“ bzw. „git commit -a“ fixiert werden. Danach sieht das Repository dann so aus:

A
|_.git
|_Zeugs
|_file01.txt
|_file02.txt
|_file03.txt
|_image01.txt
|_image02.txt
|_image03.txt

Für Git Neulinge das ganze nochmal ein wenig genauer. Mittels „git remote add other ../B“ wird dem Repository A ein neuer Remote hinzugefügt. Die Daten aus diesem werden dann mittels „git fetch other“ geladen und anschließend werden diese „git checkout -b tmpBranch other/master“ in einen neuen Branch namens „tmpBranch“ gepackt.

Nun machen wir mit „git checkout master“ den Masterbranch wieder zum aktiven Branch und mergen den „tmpBranch“ mittels „git merge tmpBranch“ in den Masterbranch. Danach wird der „tmpBranch“ mittels „git branch -d tmpBranch“ gelöscht und der nicht mehr benötige Remote mittels „git remote rm other“ entfernt.

Nun wird das ganze noch mit „git push“ auf den Remote des Repositories gepusht und fertig ist die Überführung.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Git
http://progit.org/book/de/ch3-4.html
http://de.gitready.com/beginner/2009/01/25/branching-and-merging.html
http://stackoverflow.com/questions/1683531/how-to-import-existing-git-repository-into-another

GitHub SSH Schlüssel unter Windows hinzufügen

Vor ein paar Tagen gab es einen Artikel darüber wie man den SSH Schlüssel für GitHub unter Ubuntu hinzufügt. Heute gibt es das ganze für Windows. Nach der Installation von TortiseGit starten wir die Git Bash welche im Startmenü zu finden ist. Dort erzeugen wir dann den SSH Schlüssel mittels:

ssh-keygen -t rsa -C ""

Diese Schlüssel fügen wir nun unter GitHub (https://github.com/account/ssh) hinzu. Dazu öffnen wir die Datei id_rsa.pub welche sich im Ordner .ssh befindet. Der .ssh Ordner ist dabei in den Eigenen Dateien zu finden.

Das Problem an dieser Variante ist das damit das auschecken nur in der Git Bash aber nicht direkt in TortiseGit funktioniert, da dieses einen anderes Schlüsselformat nutzt. Um einen Schlüssel im PuTTY Format zu erzeugen muss zuerst die Software PuTTYgen.exe (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) heruntergeladen werden. Nach dem Start der Anwendung sieht das ganze so aus:

Dort drücken wir auf den Button Generate und bewegen die Maus in dem leeren Bereich um Zufallsdaten für die Schlüsselgenerierung zu liefern. Nachdem der Schlüssel erzeugt würde, drücken wir die Buttons Save public key und Save private key um die beiden Schlüssel zu sichern. Der Public Key kann dabei direkt aus der Anwendung in das GitHub Profil kopiert werden.

Beim git clone muss nun nur noch die PuTTY Private Key Datei angeben werden und schon sollte auch hier das auschecken auch hier ohne Probleme funktionieren.

Weitere Informationen gibt es unter:
http://help.github.com/win-set-up-git/