Forken eines bestehenden GitHub Projekts

6 Jul

Etherpad, der kooperative Texteditor auf dem meine Arbeit basiert, ist ein Open-Source Projekt, welches das verteilte Versionskontrollsystem GIT einsetzt. Die Seite github.com stellt für solche Projekte eine kostenlose Plattform dar. Im folgenden möchte ich kurz beschreiben, wie man einen Fork eines bestehenden, auf GitHub gehosteten Projekts anlegt.

Im folgenden wird davon ausgegangen, dass es sich um einen Windows Host handelt und das Git-1.7.4-preview20110204.exe als GIT Version installiert ist. Darüber hinaus wird vorausgesetzt, dass man einen Account auf GitHub angelegt hat und angemeldet ist.

Um GIT über SSH zu benutzen muss man zu erst ein Public/Private Key Paar erzeugen. Dafür benutzt man das Tools ssh-keygen. Dieses Tool erzeugt folgenden Dateien im Verzeichnis ~/.ssh/

  • id_rsa
  • id_rsa.pub

Den Inhalt der Datei id_rsa.pub fügt man nun bei GitHub unterhalb von Account Settings -> SSH Public Keys ein. Tut man dies nicht, so quittiert Git jegliche Kommunikationsversuche mit GitHub mit einem Permission denied (publickey) Fehler. Siehe dazu auch http://help.github.com/ssh-issues.

Jetzt, wo die Kommunikation mit GitHub funktionieren sollte, navigiert man über das Webinterface auf die Seite des Projekts, welches man gerne forken möchte, in meinem Fall als https://github.com/ether/pad. Dort klickt man auf das Fork-Symbol im rechten oberen Bereich. Siehe dazu auch http://help.github.com/fork-a-repo.

Nun hat man einen Fork des bestehenden Projekts angelegt, welches bis jetzt aber nur auf GitHub liegt. Aus einer GIT Shell heraus kann man sich das Repository lokal clonen, im Falle meines Etherpad-Forks also z.B. mit folgendem Befehl.

git clone git@github.com:sciflow/pad.git

Um nun Änderungen am Originalrepository in den Fork integrieren zu können, muss man dieses als sog. Remote hinzufügen. Dazu wechselt man in das lokale Verzeichnis des gerade geclonten Repositories, als bsp. ~/Desktop/Masterarbeit/github/sciflow/pad und fügt github.com/ether/pad als neuen Remote ‘upstream’ hinzu. Anschließend kann man mit Hilfe von git fetch und git merge die Änderungen am ether/pad Repository in das lokale Repoistory integrieren.

Michael@MICHAEL-PC ~/Desktop/Masterarbeit/github/sciflow
$ cd pad/

Michael@MICHAEL-PC ~/Desktop/Masterarbeit/github/sciflow/pad (master)
$ git remote add upstream git://github.com/ether/pad.git

Michael@MICHAEL-PC ~/Desktop/Masterarbeit/github/sciflow/pad (master)
$ git fetch upstream
From git://github.com/ether/pad
 * [new branch]      master     -> upstream/master
 * [new branch]      postgres    -> upstream/postgres
 * [new branch]      releases-1.0    -> upstream/releases-1.0
 * [new branch]      releases-1.1    -> upstream/releases-1.1

Michael@MICHAEL-PC ~/Desktop/Masterarbeit/github/sciflow/pad (master)
$ git merge upstream/master
Already up-to-date.

Hinterlasse einen Kommentar