Was ist GitHub? Mehr als Git-Versionskontrolle in der Cloud

GitHub ist im Kern ein Git-Repository-Hosting-Service, dh ein Cloud-basiertes Quellcode-Management- oder Versionskontrollsystem, aber das ist erst der Anfang. Darüber hinaus implementiert GitHub Funktionen für die Codeüberprüfung (Pull-Anforderungen, Unterschiede und Überprüfungsanforderungen), das Projektmanagement (einschließlich Problemverfolgung und -zuweisung), die Integration in andere Entwicklertools, die Teamverwaltung, die Dokumentation und die „soziale Codierung“.

GitHub ist so etwas wie eine Social-Networking-Site für Programmierer und eine offene Umgebung, in der Programmierer Open Source-Code frei teilen und zusammenarbeiten können (sogar ad hoc). Mit GitHub können Sie auf einfache Weise nützlichen Code finden, Repositorys für den eigenen Gebrauch kopieren und Änderungen an Projekten anderer senden. Infolgedessen hat GitHub praktisch jedes Open-Source-Projekt von Bedeutung beherbergt.

Wann immer ich ein Open Source-Projekt erkunden möchte, suche ich zunächst nach dem Projektnamen. Sobald ich die Projektwebsite gefunden habe, suche ich nach ihrem Code-Repository-Link und lande neun Mal von zehn auf GitHub.

Git Versionskontrolle

Bevor wir verstehen können, was GitHub macht und wie GitHub funktioniert, müssen wir Git verstehen. Git ist ein verteiltes Versionskontrollsystem, das ursprünglich von Linus Torvalds im Jahr 2005 für und mit Hilfe der Linux-Kernel-Community geschrieben wurde. Ich bin nicht hier, um Sie auf Git zu verkaufen, also erspare ich Ihnen das Spiel darüber, wie schnell und klein und flexibel und beliebt es ist, aber Sie sollten das wissen, wenn Sie ein Git-Repository klonen (kurz „Repo“). Sie erhalten den gesamten Versionsverlauf auf Ihrem eigenen Computer, nicht nur einen Schnappschuss von einem Zweig gleichzeitig.

Git wurde als Befehlszeilentool gestartet, was seinem Ursprung in der Linux-Kernel-Community entspricht. Sie können weiterhin die Git-Befehlszeile verwenden, wenn Sie möchten, müssen dies aber nicht. Anstelle oder zusätzlich zur Befehlszeile können Sie den kostenlosen GitHub-Client unter Windows oder Mac oder eine Reihe anderer GUIs für Git oder einen in Git integrierten Code-Editor verwenden. Alle diese Optionen sind anfangs einfacher zu verwenden als die Befehlszeile. Die Git-Befehlszeile ist auf den meisten Mac- und Linux-Systemen vorinstalliert und unterstützt alle Vorgänge. Die GUIs unterstützen normalerweise eine häufig verwendete Teilmenge von Git-Operationen.

Git unterscheidet sich von älteren Versionskontrollsystemen wie Subversion dadurch, dass es eher verteilt als zentralisiert ist. Es ist auch ziemlich schnell, zumal die meisten Vorgänge in Ihrem lokalen Repository stattfinden. Die Verwendung von Git erhöht jedoch die Komplexität: Das Festschreiben von Code in Ihr lokales Repository und das Verschieben Ihrer Festschreibungen in ein Remote-Repository sind separate Schritte. Wenn Teams dies vergessen (oder nicht darüber unterrichtet wurden), kann dies zu Situationen führen, in denen verschiedene Entwickler mit unterschiedlichen Codebasen arbeiten.

Ein entferntes Git-Repository kann sich auf einem Server oder auf dem Computer eines anderen Entwicklers befinden. Dies ermöglicht viele mögliche Workflows für Teams. Ein gängiger Workflow besteht darin, ein Server-Repository als "gesegnetes" Repository zu verwenden, für das nur überprüfter, gut getesteter Code festgeschrieben wird, häufig durch eine Pull-Anforderung, die vom Repository eines Entwicklers ausgegeben wird.

GitHub-Funktionalität

Ich habe bereits festgestellt, dass GitHub ein Cloud-basierter Git-Server für Code-Hosting und Social Coding ist und Funktionen für die Codeüberprüfung (Pull-Anforderungen, Unterschiede und Überprüfungsanforderungen), das Projektmanagement (einschließlich Problemverfolgung und -zuweisung) implementiert. Integrationen mit anderen Entwicklertools, Teammanagement und Dokumentation.

Die neueste Innovation im Bereich Social Coding von GitHub sind Commit-Co-Autoren . Dies erreichen Sie, indem Sie am Ende einer Commit-Nachricht einen oder mehrere "Co-Authored-by" -Trailer hinzufügen. Dieser Mechanismus wirkt sich nicht auf den Repo- Kern an sich aus und ändert auch nicht das Aussehen des Repos auf einfachem Git. Auf GitHub zeigt das Chrome jedoch mehrere Committer in der Commit-Liste an und gibt jedem Co-Autor eine Gutschrift in seinem oder ihrem Beitragsgraph.

Wenn Sie möchten, können Sie GitHub mithilfe der GitHub GraphQL-API erweitern. Dies ist eine signifikante Verbesserung gegenüber der vorherigen API von GitHub, die auf REST-Aufrufen basierte.

GitHub Enterprise

GitHub.com ist ein Cloud-Hosting-Service, der eine Reihe von Kontotypen verarbeiten kann: kostenlose (nur öffentliche Repos) und bezahlte (7 USD pro Monat) Entwicklerkonten, Teams (9 USD pro Benutzer und Monat) und Unternehmen (21 USD pro Benutzer und Monat) ). Wenn Sie GitHub Enterprise lokal oder in Ihrer eigenen Cloud-Instanz unter AWS, Microsoft Azure, Google Cloud Platform oder IBM Cloud ausführen möchten, können Sie dies für den gleichen Preis von 21 USD pro Benutzer und Monat wie ein gehostetes Geschäftskonto tun. GitHub Enterprise fügt Benutzern einige nützliche Funktionen hinzu, z. B. In-App-Messaging für Benutzer und in LDAP-Verzeichnisse integrierte Zugriffsbereitstellung, gibt jedoch die 99,95-prozentige Verfügbarkeits-SLA von GitHub.com für gehostete Geschäftskonten auf.

GitHub gegen Bitbucket

GitHub ist nicht der einzige gehostete erweiterte Git-Service, und GitHub Enterprise ist nicht das einzige lokale Produkt für Unternehmen. Atlassian Bitbucket konkurriert mit beiden, mit etwas niedrigeren Preisen und einer kostenlosen fünfköpfigen Teamebene, die unbegrenzte private Repos und die Verwendung von Bitbucket-Pipelines für die kontinuierliche Integration umfasst. GitHub ist eine beliebtere Website für Open Source-Projekte und verfügt über einen viel größeren Pool an Open Source-Entwicklern. Die Preise von Bitbucket sind für kleine Startups günstiger.

GitHub vs. GitLab

GitLab konkurriert sowohl mit GitHub als auch mit Bitbucket, sowohl gehostet als auch lokal. Oberflächlich betrachtet scheint GitLab mehr Lebenszyklusfunktionen zu haben als die anderen, aber der Unterschied zu Atlassian verschwindet größtenteils, wenn Sie Jira bei der Bewertung von Bitbucket einbeziehen. GitLab bietet Gold-Plan-Cloud-Funktionen für Open Source-Projekte kostenlos an, aber diese zusätzliche Funktionalität kompensiert die größere Open Source-Entwickler-Community auf GitHub nicht wirklich.

GitHub Desktop

Mit dem unten gezeigten GitHub Desktop können Sie Ihre GitHub.com- und GitHub Enterprise-Repositorys einfach verwalten. Es implementiert zwar nicht alle Funktionen der Git-Befehlszeile und der GitHub-Web-GUI, implementiert jedoch alle Vorgänge, die Sie täglich von Ihrem Desktop aus ausführen, während Sie zu Projekten beitragen. In der Regel klonen Sie Repos von GitHub auf GitHub Desktop, synchronisieren sie nach Bedarf, erstellen Zweige für Ihre Arbeit, legen Ihre Arbeit fest und setzen gelegentlich einen oder mehrere Commits zurück.

Um mit Repos zu arbeiten, für die Sie keine Commit- und Collaboration-Berechtigungen haben, beginnen Sie normalerweise damit, das Repo auf GitHub zu forken und den Fork auf Ihren Desktop zu klonen. Anschließend fügen Sie alle Zweige hinzu, die Sie in GitHub Desktop benötigen, übernehmen die gewünschten Änderungen, testen Ihre Arbeit, übertragen die Festschreibungen zurück auf Ihr Remote-Forked-Repo und generieren schließlich eine Pull-Anforderung an das übergeordnete Projekt.

Sie können die Schaltfläche Pull Request oben rechts auf der GitHub Desktop-Oberfläche sehen. Sie können auch viele Commits im Neo4j-Projekt sehen, bei denen es sich um Zusammenführungen von Zweigen oder Pull-Anforderungen handelte. Das ist typisch für Open Source-Projekte mit wenigen Committern und vielen Mitwirkenden.

Atom-Editor

Sie können jeden beliebigen Programmiereditor verwenden, um Code zu bearbeiten, einschließlich des kostenlosen, hackbaren Open-Source-Atom-Editors von GitHub (siehe unten), der sich gut in GitHub und GitHub Desktop integrieren lässt. Sie können Atom unter MacOS, Windows oder Linux verwenden. Sie können Atom von GitHub Desktop aus öffnen, indem Sie mit der rechten Maustaste auf das Repository klicken, das Sie durchsuchen oder bearbeiten möchten.

Atom wird mit ca. 90 Paketen, vier UI-Themen und acht Syntax-Themen geliefert. Sie können Ihrer Installation von Atom 7.000 Pakete und 2.000 Themen hinzufügen. Pakete können bestimmte Programmiersprachen wie TypeScript unterstützen oder Funktionen wie Hydrogen hinzufügen, eine interaktive Codierungsumgebung, die Python-, R-, JavaScript- und andere Jupyter-Kernel unterstützt.

Atom basiert auf der Integration von HTML, JavaScript, CSS und Node.js. Es läuft auf Electron, einem Framework zum Erstellen plattformübergreifender Apps mithilfe von Webtechnologien. GitHub Desktop läuft auch auf Electron.

GitHub-Projekte

Open-Source-Softwareprojekte benötigen häufig Möglichkeiten zur Durchsetzung der Qualitätskontrolle, während Beiträge von außerhalb des Kernteams der Committer akzeptiert werden. Der Bedarf an Mitwirkenden ist enorm, aber es ist ein schwieriges und potenziell gefährliches Unterfangen, neue Mitwirkende in das Projekt einzubeziehen und gleichzeitig die Integrität der Codebasis aufrechtzuerhalten. Gleichzeitig ist der Bedarf an Feedback von Benutzern des Projekts enorm.

GitHub verfügt über eine Reihe von Mechanismen, mit denen sich die Räder von Open Source-Projekten schmieren lassen. Beispielsweise können Benutzer dem Projekt auf GitHub Probleme hinzufügen , um Fehler zu melden oder Funktionen anzufordern. Einige andere Systeme nennen diese Tickets . Projektmanager, die mit Problemen arbeiten, können Aufgabenlisten erstellen, Probleme bestimmten Mitwirkenden zuweisen, andere interessierte Mitwirkende erwähnen, damit sie über Änderungen informiert werden, Beschriftungen hinzufügen und Meilensteine ​​hinzufügen.

Um einen Beitrag zu einem Projekt, starten Sie im Grunde aus einem Thema Kopf Zweig, welche die Änderungen enthält , die Sie den Projekt hinzugefügt werden sollen Basiszweig und initialisieren eine Pull - Anforderung aus dem Kopf Zweig, wie unten gezeigt. Dann verschieben Sie Ihre Commits und fügen sie dem Projektzweig hinzu. Andere Mitwirkende können Ihre vorgeschlagenen Änderungen überprüfen, Überprüfungskommentare hinzufügen, zur Diskussion über Pull-Anfragen beitragen und der Pull-Anfrage ihre eigenen Commits hinzufügen.

Sobald alle Beteiligten mit den vorgeschlagenen Änderungen zufrieden sind, kann ein Committer die Pull-Anforderung zusammenführen. Durch das Zusammenführen können alle Commits beibehalten, alle Änderungen zu einem einzigen Commit zusammengefasst oder die Commits vom Hauptzweig in den Basiszweig zurückgesetzt werden. Wenn die Zusammenführung Konflikte erzeugt, können Sie diese auf GitHub oder über die Befehlszeile lösen.

Durch Codeüberprüfungen auf GitHub kann ein verteiltes Team asynchron zusammenarbeiten. Zu den nützlichen GitHub-Tools für Prüfer gehören Unterschiede (die untere Hälfte des Screenshots unten), der Verlauf (die obere Hälfte) und die Schuldansicht (eine Möglichkeit, die Entwicklung eines Datei-Commits nach Commit anzuzeigen). Codediskussionen auf GitHub werden in Kommentaren behandelt, die im Einklang mit Ihren Codeänderungen angezeigt werden. Wenn die integrierten Tools für Ihr Projekt nicht ausreichen, können Sie Tools zur Codeüberprüfung und kontinuierlichen Integration vom GitHub-Marktplatz hinzufügen. Marktplatz-Add-Ons sind für Open Source-Projekte häufig kostenlos.

GitHub-Kernbilder

Gists sind spezielle GitHub-Repositorys zum Teilen Ihrer Arbeit (öffentlich) oder zum Speichern von Arbeit zur späteren Wiederverwendung (geheim). Sie können einzelne Dateien, Teile von Dateien oder vollständige Anwendungen enthalten. Sie können Gists herunterladen, klonen, teilen und einbetten.

Öffentliche Erkenntnisse können bei Suchanfragen entdeckt und gefunden werden. Sie können Schlüsselwörter verwenden, um Ihre Suche einzugrenzen, einschließlich Präfixen, um die Ergebnisse auf das Wesentliche bestimmter Benutzer, das Wesentliche mit mindestens N Sternen, das Wesentliche mit bestimmten Dateinamen usw. zu beschränken.

Geheime Inhalte sind nicht durchsuchbar, aber jeder mit der URL kann sie sehen. Wenn Sie wirklich möchten, dass Ihr Code geschützt wird, verwenden Sie ein privates Repository.

Wie wir gesehen haben, bietet GitHub Git-Repositorys als Service sowie Funktionen für die Codeüberprüfung, das Projektmanagement, die Integration mit anderen Entwicklertools, die Teamverwaltung, die soziale Codierung und die Dokumentation. GitHub ist zwar nicht das einzige Produkt in seiner Kategorie, aber das dominierende Repository für die Entwicklung von Open Source-Software.