GitHub

(Dieses Modul ist optional)

GitHub ist ein Webservice für das Verwalten von Software Code via Git. Darüber hinaus bietet GitHub viele weitere Funktionen, von Projektmanagement mit Taskverwaltung, über Wikis bis zum Buildserver. GitHub ist die Plattform für Opensource Projekte.

Weitere Infos:

GitHub Alternativen

Natürlich ist GitHub nicht die einzige Plattform, welche diesen Service anbietet. Alle Alternativen haben ihre eigenen Features und Limitierungen, im Kern verwenden aber alle Git.

Alternativen:

GitHub Account

Falls du noch keinen GitHub-Account hast, wäre jetzt der Moment einen zu erstellen. https://github.com/signup

Git Protokolle

Um auf ein entferntes Git Repository zuzugreifen, gibt es in der Regel zwei Varianten:

  • HTTPS
  • SSH

Beide Protokolle bieten standardmässig Verschlüsselung, Authentifizierung und Komprimierung.

Git über HTTPS

Kurze Wiederholung: Um ein Repository über HTTPS zu klonen verwendet man den Befehl:

1
$ git clone https://github.com/kelseyhightower/nocode.git

Dies ist die einfachste Variante, um Code schnell herunterzuladen und lokal im eigenen Editor zu betrachten.

Vorteile:

  • Anonymer Zugriff möglich
  • Zugriff für Systeme, auf denen SSH weniger verbreitet ist
  • HTTPS ist auf vielen Corporate Firewalls standardmässig offen

Nachteile:

  • Zwischenspeicherung der Anmeldedaten mit HTTPS weniger benutzerfreundlich als mit SSH Keys
  • Konfiguration des Webservers etwas komplizierter als die von SSH

Git über SSH

Um ein Repository mit SSH zu klonen, kommt folgender Befehl zum Einsatz:

1
$ git clone git@github.com:cajotafer/10xengineers.git

Für die meisten Anwendungsfälle ist dies der bevorzugte Weg, um entfernte Git Repositories zu verwenden.

Vorteile:

  • SSH ist auf jedem Linux System bereits vorinstalliert (server- wie clientseitig)
  • SSH Server sind sehr einfach zu konfigurieren
  • Der Zugriff via SSH ist sehr sicher

Nachteile:

  • Bietet keinen anonymen Zugriff

GitHub Features

FeatureFunktion
IssuesErmöglichen es, Tasks in einem Repo zu erstellen und zu tracken.
Pull RequestsEin Pull Request ermöglicht es, Changes zu reviewen und zu besprechen, bevor sie in einen Branch gemerged werden.
ForksEine Fork ist eine Kopie von einem Git-Repo. Die Fork kann dann bearbeitet und angepasst werden, ohne dass das originale Repo davon betroffen ist.
GitHub PagesBasic Webseiten welche auf GitHub gehostet werden
GitHub ActionsCI/CD Integration von GitHub

Hands On

Für dieses Hands-On werden wir alles via Webinterface von GitHub machen. Ein Grossteil der Tasks können jedoch auch Lokal mit Git im Terminal gemacht werden.

Branches und Pull Requests

  1. https://guides.github.com/activities/hello-world/

Forks, Pull Requests, Reviews

  1. Fork erstellen vom Repo. Create Fork
  2. Weitere User auf Fork hinzufügen Add User
  3. Branch auf Fork erstellen
  4. hello-world.sh auf dem Master Branch anpassen und committen.
    1
    2
    3
    
    #!/bin/bash
    
    echo 'Hello World Master'
    
  5. hello-world.sh auf dem neuen Branch anpassen und committen.
    1
    2
    3
    
    #!/bin/bash
    
    echo 'Hello World Feature'
    
  6. Pull Request erstellen
  7. Da auf beiden Branches die gleiche Zeile bearbeitet wurde, kann GitHub die Branches nicht automatisch Mergen. Aus diesem Grund müssen zuerst die Konflikte gelöst werden Fix Merge
  8. Teamkollege als Reviewer zuweisen.
  9. Review Changes umsetzen.
  10. Pull Request mergen.
  11. Merge Request auf Original Repo erstellen
  12. Ende