c't 21/2018
S. 158
FAQ
Schlagwort

Arbeiten mit GitHub

Antworten auf die häufigsten Fragen

GitHub, GitLab, Git?

¯??? Was sind denn Git, GitHub und GitLab und worin unterscheiden sie sich?

¯!!! Den Grundstein hat das Versionskontrollsystem (VCS) Git gelegt. Es wurde vom Linux-Erfinder Linus Torvalds programmiert, weil er mit den verfügbaren Versionskontrollsystemen zur Entwicklung des Linux-Kernels nicht zufrieden war. Mittlerweile haben andere, allen voran der Google-Entwickler Junio C Hamano, die Weiterentwicklung von Git übernommen. Um mit Git zu arbeiten, braucht man nichts außer dem gleichnamigen Programm, das für alle größeren Plattformen und Architekturen verfügbar ist und lokal läuft.

GitHub ist eine kostenlos nutzbare Online-Plattform, die Git nutzt, um das Hosting von Software und deren Quellcode zu vereinfachen. Den Code lädt man dort mittels eines Git-Clients hoch, daher der Name. Das Unternehmen beteiligt sich inzwischen auch an der Weiterentwicklung von Git. GitHub ist im Bereich der Git-Hosting-Dienste Marktführer und bei Open-Source-Entwicklern extrem populär.

Neben GitHub haben sich zahlreiche Alternativen entwickelt: Die prominenteste ist GitLab, denn es ist – im Gegensatz zur GitHubs Plattform – Open Source und arbeitet auf dem eigenen Server. Alternativ bietet GitLab seine Plattform auch als gehostetes Angebot an.

Gemeinsam haben GitHub, GitLab und Konsorten eine ausgefeilte Oberfläche zur Verwaltung von Projekten und Code. Sie bieten Bugtracker, Wikis zur Projektdokumentation und die Integration von verschiedensten Diensten, um Entwicklern Arbeit abzunehmen. Wer die volle Kontrolle über Code, User, Vorgänge und Infrastruktur will, greift am besten zu Lösungen wie GitLab.

GitHub für Laien

¯??? Ich bin kein Entwickler, suche nur manchmal nach Open-Source-Software und lande ständig bei GitHub. Wo finde ich jetzt das Programm?

¯!!! Für Außenstehende ist der erste Besuch bei GitHub etwas verwirrend. Landet man zum Beispiel über eine Suchmaschine auf der Seite eines Projekts und will nur das fertige Programm herunterladen, sollte man schauen, ob es im horizontalen Menü oben den Punkt „Releases“ gibt. Hier können die Entwickler neben dem verpackten Quellcode auch Installationspakete bereitstellen. Nutzen die Entwickler des Projekts diese Möglichkeit nicht, gibt es oben rechts den Button „Clone or download“ und dort die Möglichkeit, den kompletten Inhalt des GitHub-Projektes, bei Git „Repository“ genannt, als Zip-Datei herunterzuladen. Man sollte ein wenig herunterscrollen, denn weiter unten findet man üblicherweise die Projektdokumentation, in der man erfährt, wie man mit dem heruntergeladenen Code zu verfahren hat. Oft finden sich dort auch Hinweise auf fertige Binär- oder Installationspakete.

GitHub-Account? Ja oder nein?

¯??? Ich bin Softwareentwickler, aber habe keinen GitHub-Account. Lohnt sich der überhaupt, wenn ich ohnehin nur für mich privat entwickele?

Mit einem aktiven und gepflegten GitHub-Account kann man Arbeitgeber für sich begeistern.

¯!!! Vielleicht erscheinen einem die eigenen Projekte für andere überflüssig, sie könnten aber auch genau das sein, was jemand anderes gerade sucht. Daher ist es eine gute Idee, sie zu teilen. Manchmal bekommt man auch Feedback und Tipps, mit denen man nicht gerechnet hat. Zudem hat man den Code dann quasi immer griffbereit.

GitHubs prominenter Status hat inzwischen außerdem dafür gesorgt, dass potenzielle Arbeitgeber dort gern einen Blick auf den Account von Bewerbern werfen. Wenn der gut aussieht, spricht das dafür, dass der Bewerber passionierter Softwareentwickler ist.

Auch für Unternehmen kann es sinnvoll sein, sich auf GitHub zu präsentieren. Dort können die Bewerber genau sehen, welche Werkzeuge beim möglichen neuen Arbeitgeber zum Einsatz kommen, und bei vielen kommt es gut an, wenn Unternehmen sich an Open-Source-Projekten beteiligen.

Organisations-Account

¯??? Ich möchte Git-Repositories erstellen, die nicht direkt mit mir assoziiert sind, sondern mit einer Organisation. Muss ich dafür einen kommerziellen Account eröffnen?

¯!!! Nein. Sie können eine Organisation bei GitHub einrichten, dort Projekte veröffentlichen und mit anderen Entwicklern bearbeiten. Diese kann auch als Aushängeschild funktionieren, indem Sie ein Logo und eine Organisationsbeschreibung hinterlegen. Innerhalb der Organisation können Sie Dinge wie Rechte für die Entwickler, Projekte und Entwickler-Teams verwalten.

Kostenpflichtiger Account

¯??? Ist es sinnvoll, für GitHub zu zahlen?

¯!!! Das ist sehr von Ihren Anforderungen abhängig. Der größte Vorteil bei einem kommerziellen GitHub-Zugang sind die privaten Repositories, die anderen nicht zugänglich sind. Eine nicht öffentliche Versionierung lässt sich aber auch mit einer eigenen GitLab-Instanz oder auf eigener Hardware umsetzen. Tendenziell lohnt sich ein kommerzieller Account, wenn Sie mit größeren Teams arbeiten und komplexe oder kommerzielle Projekte veröffentlichen wollen.

Anmelden

¯??? Immer wenn ich einen neuen Commit erstelle, muss ich meinen Benutzernamen und mein Passwort eingeben. Geht das nicht komfortabler?

Wer seinen öffentlichen GPG-Schlüssel bei GitHub hinterlegt, kann seine Commits verifizieren und somit für mehr Sicherheit bei den Anwendern sorgen.

¯!!! Doch – und auch sicherer: Erzeugen Sie ein SSH-Schlüsselpaar [1] und hinterlegen Sie den öffentlichen SSH-Schlüssel bei GitHub. Das geht über die Seite github.com/settings/keys. Dort können Sie auch einen GPG-Schlüssel hinterlegen, mit dem Sie Ihre Commits signieren können. GitHub überprüft die von Ihnen signierten Commits dann mithilfe des öffentlichen Schlüssels. Sie müssen Git dann nur noch die ID Ihres GPG-Keys mitteilen:

git config --global user.signingkey :

.IHRE-GPG-KEY-ID

Anschließend erscheint neben Ihren neuen Commits eine grüne Box mit der Beschriftung „Verified“. Diese Verifikation stellt sicher, dass alle Commits, die Sie tätigen, von Ihnen durchgeführt wurden.

Client installieren

¯??? Brauche ich eigentlich den GitHub-Desktop-Client, um mit GitHub zu arbeiten?

¯!!! Mit GitHub kann man auf verschiedenen Wegen arbeiten [2]. Über die Kommandozeile nimmt man das Programm git, das bei macOS und Linux meist vorinstalliert ist; Windows-Nutzer finden den Download über ct.de/yzbe. Der Desktop-Client erleichtert das Klonen, Committen und Pushen von Repositories in einer grafischen Oberfläche. Wer außer GitHub noch andere Git-Hoster nutzt, dem empfehlen wir einen Blick auf grafische Git-Clients wie Tower, GitKraken und SourceTree. Aus vielen Programmierumgebungen kann man per Erweiterung auch direkt einen Commit in Git-Projekten erzeugen.

Große Dateien

¯??? Ich habe versucht, einen großen Datensatz im Repository zu speichern. Dadurch dauert das Committen und Klonen unglaublich lange. Ist das nicht vorgesehen?

¯!!! Für dieses Problem gibt es die Git-Erweiterung LFS, die GitHub unterstützt. Jedem Benutzer stellt GitHub 1 GByte kostenlosen LFS-Speicherplatz zur Verfügung. LFS ersetzt die großen Dateien mit Zeigern, damit man nicht bei jedem Checkout riesige Datenmengen herunterladen muss. Erst wenn man sie bearbeitet oder darauf zugegriffen wird, lädt Git die Dateien herunter.

GitHub Gist

¯??? Ich lege manchmal Notizen, nützliche Skripte und Link-Sammlungen bei GitHub ab und teile sie zum Beispiel in Foren. Muss ich dafür immer ein Repository anlegen?

¯!!! Für diese Zwecke gibt es das Feature GitHub Gist, zu finden unter gist.github.com. Hier kann man genau diese Art von Material ablegen – also alle Schnipsel, die kein fertiges Projekt bilden. Eine Versionierung, Sterne-Bewertungen und Kommentare von anderen Nutzern gibt es wie im Repository, allerdings keine Branches und keine Readme-Datei.

GitHub und Microsoft

¯??? Microsoft hat GitHub gekauft. Was bedeutet das für mich?

¯!!! Was Microsoft ändern wird, lässt sich noch nicht sagen. Voraussichtlich wird Microsoft GitHub auf seine Server in der Azure-Cloud umlagern. Auch die oft empfohlene Alternative GitLab lag bis vor wenigen Monaten ebenfalls in Microsofts Cloud. Wer öffentliche Projekte bei GitHub bereitstellt, muss ohnehin nicht befürchten, dass jemand unbefugt Zugang zum Code bekommt. Wer seinen Code nicht aus der Hand geben will, sollte seine eigene Server-Instanz, zum Beispiel von GitLab, betreiben.

Schöne Projektseiten

¯??? Viele GitHub-Repositories haben liebevoll gestaltete Projektseiten. Wie kann ich das ebenfalls erreichen?

¯!!! GitHub erzeugt die Übersichtsseite des Projekts aus der Datei README.md. Wie für praktisch alles auf GitHub kommt hier das Markup-Format Markdown [3] zum Einsatz. Das ist relativ einfach zu lernen, aber dennoch mächtig. Für den Anfang können Sie die README.md oder andere Markdown-Dateien direkt in einem Editor auf der Website öffnen. Klicken Sie dazu die gewünschte Datei an, damit GitHub sie öffnet. Mit einem Klick auf den kleinen Stift rechts oben können Sie die Datei dann bearbeiten.

GitHub Pages

¯??? Einige GitHub-Projekte haben offenbar ihre Homepage auf einer GitHub-Subdomain gehostet. Sind das spezielle Projekte oder Benutzer?

Nicht nur auf GitHub kann man Code hosten: Mit eigener Hardware und GitLab hat man noch mehr Kontrolle.

¯!!! Jeder Nutzer hat diese Möglichkeit. Die Funktion heißt GitHub Pages und ist kostenlos. Eingerichtet wird die Seite in den Einstellungen eines Repositories. GitHub stellt verschiedene Themes bereit. Die Inhalte selbst erstellen Sie in Markdown, im Hintergrund läuft dann das Markdown-Blog Jekyll. Nach der Einrichtung im Assistenten erreichen Sie Ihre Seite unter <Benutzername>.github.io/<Name des Repositories>. Alle Möglichkeiten der Funktion wie eigene Templates, Fehlerseiten und eine eigene Domain erklärt die Dokumentation unter pages.github.com.

Gefunden werden

¯??? Ich habe ein Projekt veröffentlicht, aber es wird kaum gefunden. Was kann ich tun, damit es sichtbarer wird?

¯!!! Als Erstes sollten Sie eine übersichtliche und aussagekräftige README.md-Datei erzeugen. Am besten mit einem Screenshot. Das fängt Besucher besser ein als eine lieblos ausgefüllte Projektseite.

Ebenfalls hilfreich ist es, eine gute Kurzbeschreibung zu hinterlegen. Gehen Sie dazu auf die Projektseite und klicken Sie rechts auf den kleinen „Edit“-Knopf. Dort können Sie in einem kurzen Text beschreiben, was Ihr Projekt kann. Optional können Sie noch eine Projekt-Website mit weiterführenden Informationen hinterlegen.

Direkt unter der Projektbeschreibung können Sie noch Themen (Topics) hinterlegen, die Ihr Projekt berührt. Seien Sie auch hier präzise, aber versuchen Sie möglichst viel abzudecken. GitHub schlägt beim Tippen auch populäre Topics vor.

Mitarbeiten

¯??? Ich habe einen Verbesserungsvorschlag für ein fremdes Projekt auf GitHub. Wie kann ich den Entwicklern diesen am besten mitteilen?

¯!!! Wenn Sie keinen Code beisteuern möchten oder können, erzeugen Sie ein „Issue“, also eine Problemmeldung für das Projekt, indem Sie den Vorschlag oder Ihr Problem präzise beschreiben. Die meisten Entwickler freuen sich über Feedback und Verbesserungsvorschläge.

Falls Sie selber verbesserten Code einbringen möchten, erstellen Sie am besten eine eigene Version des Repositories (Fork) und fügen Sie Ihre Änderungen ein. Nun committen Sie den neuen Code und laden Sie ihn zu GitHub mittels eines Pushs hoch.

Anschließend können Sie auf der Projektseite Ihres Forks einen sogenannten Pull-Request erzeugen. Dadurch bekommt der ursprüngliche Entwickler eine Anfrage mit Ihren Code-Änderungen, die er direkt in das Projekt einspielen und mit Ihnen besprechen kann.

Kontakt zu Entwicklern

¯??? Ich möchte einem Entwickler eine Nachricht schreiben, finde jedoch auf GitHub keine Möglichkeit zur Kontaktaufnahme.

¯!!! Das ist bei GitHub leider nicht vorgesehen. Sie können lediglich schauen, ob der Entwickler auf seiner Profilseite eine E-Mail-Adresse oder Homepage hinterlegt hat. Manchmal führt auch die Suche innerhalb der Projektdateien zu einer E-Mail-Adresse. Unschön, aber auch möglich, ist es, ein Issue für das betreffende Projekt zu eröffnen und dort um Kontaktaufnahme zu bitten. (mls@ct.de)