Was ist GitHub?
GitHub ist eine cloudbasierte Plattform zum Hosten von Git-Repositories und zur Zusammenarbeit mit anderen Entwicklern. Es nimmt alles, was Git lokal erledigt – das Tracking von Änderungen, die Verwaltung von Branches, das Mergen von Code – und ergänzt dies um ein Web-Interface mit Tools für Code-Reviews, Issue-Tracking, Automatisierung und Projektmanagement.
Betrachten Sie Git als den Motor und GitHub als das Dashboard. Git läuft auf Ihrer Maschine und übernimmt die Versionsverwaltung. GitHub hostet Ihr Repository online und ermöglicht es anderen, Ihren Code zu sehen, Verbesserungen vorzuschlagen, Bugs zu melden und über einen strukturierten Workflow neue Features beizusteuern.
Mit über 100 Millionen Entwicklern und 330 Millionen Repositories ist GitHub der Ort, an dem die Welt Software baut. Open-Source-Projekte, Startups, Unternehmen und Einzelentwickler nutzen es als ihre primäre Kollaborationsplattform. Wenn Sie gerade Programmieren lernen, ist ein GitHub-Profil genauso wichtig wie ein Portfolio.
Warum GitHub wichtig ist
Versionsverwaltung auf dem eigenen Rechner ist nützlich, aber für die Zusammenarbeit ist ein gemeinsamer Raum erforderlich. GitHub bietet genau diesen Raum mit Funktionen, die Teamarbeit strukturiert und transparent machen:
- Zentrales Hosting — Ihr Code liegt in der Cloud, ist von überall aus zugänglich und durch ein Backup gesichert, das niemals verloren geht.
- Pull requests — Schlagen Sie Änderungen vor, prüfen Sie Code Zeile für Zeile und führen Sie ihn erst zusammen, wenn alle einverstanden sind.
- Issues und Project Boards — Verfolgen Sie Bugs, verwalten Sie Features und organisieren Sie die Arbeit mit Labels, Milestones und Kanban-Boards.
- CI/CD-Automatisierung — GitHub Actions führt Tests aus, baut und deployt Ihren Code automatisch bei jedem Push.
- Community — Entdecken Sie Open-Source-Projekte, tragen Sie zu ihnen bei und bauen Sie Ihren Ruf als Entwickler auf.
- Sicherheit — Dependency Scanning, Secret Detection und Code-Review-Workflows erkennen Schwachstellen frühzeitig.
GitHub ist nicht nur ein Hosting-Service für Code. Es ist eine Entwicklungsplattform, die den gesamten Software-Lebenszyklus von der Idee bis zum Deployment abdeckt.
GitHub einrichten
Ein Konto erstellen
Gehe zu github.com und registriere dich mit deiner E-Mail-Adresse. Wähle den kostenlosen Plan – dieser enthält alles, was du für den Einstieg benötigst.
Git konfigurieren
Nachdem du dein Konto erstellt hast, konfiguriere Git für die Zusammenarbeit mit GitHub:
# Set your identity
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
# Set the default branch name
git config --global init.defaultBranch main
Verbindung via SSH herstellen
SSH-Keys ermöglichen es dir, dich zu authentifizieren, ohne jedes Mal dein Passwort eingeben zu müssen:
# Generate a new SSH key
ssh-keygen -t ed25519 -C "[email protected]"
# Start the SSH agent
eval "$(ssh-agent -s)"
# Add your key to the agent
ssh-add ~/.ssh/id_ed25519
# Copy the public key to add to GitHub
cat ~/.ssh/id_ed25519.pub
Gehe zu GitHub Settings > SSH and GPG keys > New SSH key, füge deinen öffentlichen Schlüssel ein und speichere diesen. Du kannst nun Repositories über SSH-URLs klonen, pushen und pullen.
Zentrale GitHub-Features
Repositories
Ein Repository ist ein Projekt auf GitHub. Es enthält Ihren Code, Konfigurationsdateien, Dokumentation und die vollständige Git-Historie. Jedes Repository verfügt über:
- Einen Code-Tab zum Durchsuchen von Dateien
- Einen Issues-Tab zur Nachverfolgung der Arbeit
- Einen Pull-Requests-Tab für Code-Reviews
- Ein Wiki für die Dokumentation
- Einen Settings-Tab für die Zugriffskontrolle
Erstellen Sie ein neues Repository über die GitHub-Startseite oder über die CLI:
# Create a new repo on GitHub, then clone it
gh repo create my-project --public --clone
Issues
Issues sind das Werkzeug zur Nachverfolgung Ihrer Arbeit. Nutzen Sie diese für Bug-Reports, Feature-Requests, Aufgaben und Diskussionen:
# Create an issue from the command line
gh issue create --title "Fix login bug" --body "Users cannot log in with empty email"
Jedes Issue kann Folgendes enthalten:
- Labels — Kategorisierung nach Typ (Bug, Enhancement, Dokumentation)
- Assignees — Wer ist verantwortlich
- Milestones — Gruppierung von Issues in Releases oder Sprints
- Verknüpfte Pull-Requests — Anzeige, welche PRs das Issue schließen
Pull-Requests
Pull-Requests sind das Herzstück der Zusammenarbeit auf GitHub. Sie ermöglichen es Ihnen, Änderungen vorzuschlagen, Code zu reviewen und diesen zu mergen, sobald er bereit ist:
# Create a branch, make changes, push, then open a PR
git checkout -b fix-login-bug
# make changes
git add .
git commit -m "Fix null check in login handler"
git push origin fix-login-bug
gh pr create --title "Fix login bug" --body "Adds null check for empty email"
Pull-Requests beinhalten Code-Review-Tools, automatisierte Checks, Diskussions-Threads und Merge-Kontrollen. Sie sind der Standardweg, um Code in eine gemeinsame Codebasis zu integrieren.
GitHub Actions
Actions automatisieren Ihren Development-Workflow. Schreiben Sie YAML-Dateien, die definieren, was passiert, wenn bestimmte Events eintreten:
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm test
Häufige Anwendungsfälle sind das Ausführen von Tests bei jedem Push, das Deployment in die Produktion beim Merge in den main-Branch und das Erstellen von Docker-Images bei einem Release.
GitHub Pages
Hosten Sie statische Websites direkt aus Ihrem Repository:
# Enable Pages in your repo settings, then push to the gh-pages branch
git checkout -b gh-pages
git push origin gh-pages
Pages ist ideal für Dokumentationsseiten, Portfolios, Blogs und Landingpages. Es unterstützt benutzerdefinierte Domains, HTTPS und statische Site-Generatoren wie Jekyll und Astro.
Zusammenarbeit in Teams
Repositories forken
Durch das Forken erstellst du eine eigene Kopie eines fremden Repositories. So kannst du Änderungen vornehmen, ohne das Original zu beeinflussen:
# Fork a repo using the GitHub CLI
gh repo fork owner/repo --clone
# Or fork and add a remote
git remote add fork https://github.com/your-username/repo.git
Forking ist der Standardweg, um zu Open-Source-Projekten beizutragen. Du forkst das Repository, nimmst Änderungen in deinem Fork vor und eröffnest einen Pull Request zurück zum Original.
Code Review
Die Code-Review-Tools von GitHub ermöglichen es dir, spezifische Zeilen zu kommentieren, Änderungen vorzuschlagen und Modifikationen anzufordern:
- Inline-Kommentare — Diskussionen über spezifische Codezeilen
- Vorgeschlagene Änderungen — Vorschläge für Edits, die Autoren mit einem Klick akzeptieren können
- Review-Freigaben — den gesamten PR genehmigen, Änderungen anfordern oder kommentieren
- Code Owners — automatische Zuweisung von Reviewern basierend auf den geänderten Dateien
Branch Protection
Schütze wichtige Branches vor versehentlichen oder unbefugten Änderungen:
- Pull Request Reviews vor dem Mergen erforderlich machen
- Status-Checks als erfolgreich voraussetzen (CI muss „grün“ sein)
- Lineare Historie erzwingen (keine Merge-Commits)
- Einschränken, wer in den Branch pushen darf
- Signierte Commits voraussetzen
Projektmanagement
GitHub Projects bietet Kanban-Boards, Tabellen und Roadmaps zur Verwaltung der Arbeit:
- Erstelle Spalten wie „To Do“, „In Progress“ und „Done“
- Verknüpfe Issues und Pull Requests mit Karten
- Automatisiere das Verschieben von Karten basierend auf Ereignissen
- Verfolge den Fortschritt mit Insights und Diagrammen
Best Practices
- Beschreibende README-Dateien schreiben — erkläre, was dein Projekt macht, wie man es installiert und wie man dazu beitragen kann.
- Issue-Templates verwenden — standardisiere Bug-Reports und Feature-Requests.
- Branch Protection aktivieren — fordere Reviews und erfolgreiche CI-Läufe vor dem Mergen an.
- Aussagekräftige PR-Beschreibungen schreiben — erkläre, was geändert wurde, warum dies geschah und wie man die Änderungen testet.
- GitHub Actions nutzen — automatisiere Testing und Deployment, anstatt dies manuell zu erledigen.
- Repositories fokussiert halten — ein Projekt pro Repo, kein Monolith aus nicht zusammenhängendem Code.
- Releases taggen — nutze Semantic Versioning und GitHub Releases, um stabile Versionen zu markieren.
- Zu Open Source beitragen — forke Projekte, behebe Fehler und reiche Pull Requests ein, um Erfahrung und Reputation aufzubauen.
Häufige Fehler
- Pushing von sensiblen Daten wie API keys oder Passwörtern in ein öffentliches Repository.
- Fehlende README, wodurch Besucher nicht wissen, was das Projekt eigentlich macht.
- Erstellen von Pull Requests ohne Beschreibung oder Kontext für die Reviewer.
- Ignorieren von Issues, sodass diese sich ohne Triage ansammeln.
- Verzicht auf Branch Protection, wodurch direkte Pushes nach main ermöglicht werden.
- Committen von node_modules, .env oder anderen Dateien, die in die .gitignore gehören.
- Nutzung von GitHub als Backup-Service, ohne Git lokal vollständig verstanden zu haben.
Was du als Nächstes lernen solltest
Du verstehst nun die Kernfunktionen von GitHub: Repositories, Issues, Pull Requests und Actions. Der nächste logische Schritt ist Git, um das zugrunde liegende Versionskontrollsystem zu meistern – einschließlich Branching, Merging und Rebasing. Such dir ein Projekt aus, beteilige dich daran und lass deine Erfahrung durch die Praxis wachsen.