GitHub [1] ist ein auf Git basierter Onlinedienst zur Verwaltung von Entwicklungsprojekten. Mit 14 Millionen Benutzern und über 35 Millionen Projekten erfreut sich GitHub großer Beliebtheit. Im Folgenden wird gezeigt, wie man mit der GitHub Erweiterung für Visual Studio einfach Projekte kopieren und Änderungen wieder hochladen kann.

Voraussetzung


Wir verwenden im Folgenden die Visual Studio 2015 Community Edition, welche unter [2] kostenlos heruntergeladen werden kann. Bei der Installation sollte darauf geachtet werden, dass in den benutzerdefinierten Optionen GitHub Erweiterung für Visual Studio unter dem Punkt Häufig verwendete Tools ausgewählt ist. An dieser Stelle ist es empfehlenswert, auch gleich Git für Windows mit zu installieren, um später Git Befehle manuell ausführen zu können.



Sollte Visual Studio 2015 bereits installiert sein, so kann unter Extras -> Extensions und Updates -> Installiert nachgeprüft werden, ob die GitHub Erweiterung für Visual Studio hinzugefügt wurde. Sollte dies nicht der Fall sein, kann sie einfach über [3] nachinstalliert werden.

Projekt forken


Als nächstes loggen wir uns in einem Browser bei GitHub ein und navigieren zur gewünschten Projektseite. Dann erstellen wir mit dem Klick auf Fork eine eigene Kopie des Projektes.



Projekt clonen


Danach öffnen wir diese Kopie in Visual Studio. Hierfür öffnen wir den Team-Explorer (Menü Ansicht) und klicken im Abschnitt GitHub auf Connect…. Nach der erfolgreichen Anmeldung klicken wir im Abschnitt GitHub auf Clone, wählen das eben kopierte Projekt aus und bestätigen mit Clone.
Nach einem kurzen Moment sollte oben eine Meldung eingeblendet werden, die besagt, dass das Projekt erfolgreich kopiert wurde. Darauf erscheint der Projektname unter Lokale Git-Repositorys. Diesen Eintrag klicken wir doppelt an und können unter Projektmappen die gewünschte Projektmappe aus dem Projekt öffnen.



Codeänderungen durchführen


Nun haben wir eine lokale Kopie des Projektes und können in der Projektmappe ganz normal Änderungen und Anpassungen vornehmen.

Änderungen committen und pushen


Zuerst müssen wir unsere Änderungen in einen Commit verpacken. Dazu klicken wir im Team-Explorer auf die Schaltfläche Änderungen und bekommen eine Liste aller von uns veränderten Dateien. Mit der Funktion Mit ungeänderten vergleichen… im Kontextmenü der Dateieinträge können wir uns die genauen Änderungen anzeigen lassen. Wenn wir zufrieden mit unseren Änderungen sind, geben wir oben im gelben Feld eine kurze Beschreibung der Änderung ein und wählen Commit für alle und Push.
Damit haben wir unsere Anpassung mit der zugehörigen Beschreibung in unsere Projekt-Kopie auf GitHub übertragen.

Pull request stellen


Möchten wir nun unsere Anpassungen den Verwaltern des ursprünglichen Projektes vorschlagen, klicken wir auf der GitHub-Projektseite auf Pull request und anschließend auf Create pull request.
Hier beschreiben wir unsere Änderung und senden mit Create pull request unseren Antrag ab.
Nun werden die Verwalter des ursprünglichen Projektes über unsere Änderung informiert und können entscheiden, ob sie unsere Änderung übernehmen möchten.



Sollte es hier zu Konflikten kommen, dann gab es zwischenzeitlich Änderungen am Hauptprojekt welche sich nicht automatisch mit unseren Änderungen vereinen lassen.

Upstream einrichten


Möchten wir nun auch neue Änderungen vom Hauptprojekt in unsere Kopie übernehmen, müssen wir zuerst eine Remoteverbindung einrichten. Dafür wählen wir im Team Explorer -> Einstellungen -> Repositoryeinstellungen -> Remotes -> Hinzufügen. Hier geben wir dem neuen Remote einen Namen und geben die git-Adresse des Hauptprojektes ein (auf der GitHub-Seite unter Clone or Download)



Danach wechseln wir in den Menüpunkt Sync des Team Explorers, klicken auf Fetch und wählen den neuangelegten Remote (hier upstream). Damit werden die neusten Änderungen heruntergeladen. In einem letzten Schritt müssen wir diese noch in unseren aktuellen Stand integrieren. Hierzu wechseln wir in den Abschnitt Branches des Team Explorers und klicken im Kontextmenü des master-Eintrages auf Mergen aus. Hier wählen wir upstream/master und master aus und klicken auf Merge.



Alle Änderungen an dem Hauptprojekt sind jetzt auch in unser Projekt übernommen worden.

[1] https://github.com
[2] https://www.visualstudio.com/de-de/products/visual-studio-community-vs.aspx
[3] https://visualstudio.github.com