GitHub
Was ist Versionskontrolle?
Versionskontrolle ist ein System, das Änderungen an Dateien über einen bestimmten Zeitraum hinweg verwaltet und nachverfolgt.Es ermöglicht mehreren Personen, gemeinsam an einem Projekt zu arbeiten, während gleichzeitig eine vollständige Liste aller Modifikationen erhalten bleibt.Änderungen an Dateien – wie Quellcode, Dokumenten oder Konfigurationsdateien – werden erfasst und in einem Speicherort gespeichert.
Man kann frühere Versionen wiederherstellen, Unterschiede zwischen Versionen vergleichen und nachvollziehen, wie sich ein Projekt entwickelt.Die Versionskontrolle unterstützt auch Funktionen wie Branching, bei dem unterschiedliche Entwicklungsstränge unabhängig voneinander verlaufen, und Merging, bei dem Änderungen aus verschiedenen Branches zusammengeführt werden.Die Versionskontrolle sorgt dafür, dass Änderungen einfach verwaltet werden können. Sie ist ein sehr wichtiges Werkzeug in der Softwareentwicklung und bei gemeinsamen Projekten.
Git im Vergleich zu anderen Versionskontrollsystemen (VCS)
Git ist der wichtigste Standard für Versionskontrolle in der Softwareentwicklung. Es gibt aber auch andere Versionskontrollsysteme (VCS). Im Folgenden werden einige wesentliche Unterschiede zwischen Git und anderen verbreiteten VCS erläutert:Mercurial: Mercurial ist ein verteiltes Versionskontrollsystem. Es hat eine ähnliche Architektur wie Git. Aber es ist stärker zentralisiert und verwendet keine Hashes zur Verfolgung von Änderungen.
Subversion (SVN) ist ein Versionskontrollsystem, das oft mit Git verglichen wird. Beide unterstützen Branching und Merging, aber für Subversion wird ein zentraler Server zur Verwaltung des Repositories benötigt.Perforce ist ein kommerzielles Versionskontrollsystem, das für große Entwicklungsprojekte gemacht wurde. Es basiert auf einem zentralisierten Ansatz und bietet zusätzliche Funktionen wie Build-Automatisierung und Issue-Tracking.
CVS (Concurrent Versions System): CVS ist ein älteres Versionskontrollsystem, das weiterhin verwendet wird.Es hat jedoch zahlreiche Einschränkungen, da es viele moderne Funktionen nicht unterstützt. Daher wird es oft als veraltet betrachtet.
Welche Möglichkeiten oder Funktionen bietet GitHub
GitHub bietet zahlreiche Möglichkeiten und Funktionen, die sich in verschiedene Bereiche gliedern lassen. Im Folgenden werden wir die wichtigsten Funktionalitäten zusammenfassen:
1. Repository-Verwaltung
- Erstellung und Verwaltung von öffentlichen und privaten Repositories
- Versionskontrolle über Git
- Unterstützung für Readme-Dateien, Lizenzdateien und Issue-Vorlagen
- Integration von Git Large File Storage (LFS) für große Dateien
2. Zusammenarbeit und Projektmanagement
- Issues zur Erfassung von Aufgaben, Fehlern und Funktionswünschen
- Pull Requests zur Einreichung von Änderungen und deren gemeinsamer Überprüfung
- Code-Reviews mit Kommentarfunktion und vorgeschriebenen Reviewern
- Discussions für offene Gespräche und Community-Austausch
- Projektboards (Kanban) zur Organisation und Visualisierung von Aufgaben
3. Continuous Integration / Continuous Deployment (CI/CD)
- GitHub Actions zur Automatisierung von Build-, Test- und Deploy-Prozessen
- Nutzung von Workflows und benutzerdefinierten Aktionen
- Vorlagen für gängige Automatisierungsaufgaben
4. Sicherheitsfunktionen
- Dependabot für automatische Sicherheitsupdates
- Code Scanning zur Analyse und Identifikation von Schwachstellen
- Secret Scanning zur Erkennung sensibler Informationen in Repositories
- Sicherheitsrichtlinien und Meldefunktionen für Sicherheitslücken
5. Veröffentlichung und Hosting
- GitHub Pages für das Hosten von statischen Websites direkt aus Repositories
- Releases zur strukturierten Veröffentlichung von Softwareversionen
6. Paketverwaltung
- GitHub Packages als integrierte Paketverwaltung für npm, Maven, Docker, RubyGems und NuGet
7. Verwaltung von Teams und Organisationen
- Verwaltung von Organisationen mit Teams, Rollen und Zugriffsrechten
- Audit Logs zur Überwachung von Aktivitäten in Organisationen (im Enterprise-Plan)
8. Erweiterungen und Integrationen
- GitHub Marketplace mit einer Vielzahl von Apps und Integrationen
- Webhooks für automatische Benachrichtigungen und externe Verknüpfungen
- API-Zugriff zur Automatisierung und Integration in andere Systeme
9. Statistiken und Analysen
- Insights für Repositories (Contributions, Commits, Pull-Request-Aktivitäten)
- Traffic-Analyse und Auswertung von Referrern und Popularität
GitHub Pricing
GitHub Free
Zielgruppe: Einzelpersonen und Hobbyentwickler*innen
Wichtige Merkmale:
- Unbegrenzte öffentliche und private Repositories
- 500 MB Speicherplatz für GitHub Packages
- 2.000 CI/CD-Minuten pro Monat (GitHub Actions)
- Basisfunktionalitäten für Issues und Projektmanagement
- Community-Support
- Eingeschränkter Zugriff auf erweiterte Sicherheitsfunktionen
Einschränkungen:
- Nur für kleine Projekte oder persönliche Nutzung sinnvoll
- Keine erweiterten Berechtigungsstufen
- Geringere Speicherkapazität und weniger Workflow-Minuten
GitHub Team
Zielgruppe: Kleine und mittelgroße Entwicklungsteams
Wichtige Merkmale:
- Alle Funktionen des Free-Plans
- 2 GB Speicherplatz für GitHub Packages
- 3.000 CI/CD-Minuten pro Monat
- Erweiterte Berechtigungen und Rollenverwaltung
- Private Repositories mit Pull-Request-Vorlagen
- Team-Dashboards und erweiterte Projektmanagement-Funktionen
- Standard-Support
- Code-Review-Funktionen (required reviewers, code owners)
- Zugriff auf Dependabot-Sicherheitsupdates
Einschränkungen:
- Eingeschränkter Zugriff auf Enterprise-spezifische Sicherheits- und Compliance-Funktionen
- Keine erweiterte SAML-Authentifizierung
GitHub Enterprise
Zielgruppe: Große Organisationen, Unternehmen und Konzerne mit hohen Sicherheits- und Compliance-Anforderungen
Wichtige Merkmale:
- Alle Funktionen des Team-Plans
- Individuell skalierbare CI/CD-Minuten und Speicher (nach Vereinbarung)
- Erweiterte Sicherheitsfunktionen (Advanced Security, Code Scanning, Secret Scanning)
- SAML Single Sign-On (SSO) und SCIM für Benutzer-Management
- Audit-Logs, Compliance-Tools und Governance-Funktionen
- IP-Adressfilterung und GitHub Connect für hybride Infrastrukturen
- Priorisierter Enterprise-Support und dedizierte Ansprechpartner
- GitHub Enterprise Cloud und GitHub Enterprise Server verfügbar
Einschränkungen:
- Erfordert hohe Investitionsbereitschaft und entsprechende IT-Infrastruktur
- Komplexere Einrichtung und Wartung
GitHub Copilot
GitHub Copilot Free
Die Software Copilot Free stellt ein leistungsfähiges Werkzeug zur Verfügung, das insbesondere Entwicklerinnen und Entwicklern bei der Programmierung unterstützt. Durch die Integration in verschiedene Entwicklungsumgebungen werden automatisierte Code-Vervollständigungen, Bearbeitungsvorschläge und intelligente Chat-Funktionen ermöglicht.Die Software ist jedoch in ihrer Funktionalität eingeschränkt und daher insbesondere für private oder kleine Projekte geeignet. Für Unternehmen hingegen fehlen erweiterte Funktionen.
Copilot Free bietet verschiedene Funktionen, die die Softwareentwicklung vereinfachen, zu den wichtigsten Merkmalen gehören die automatische Code-Vervollständigung in gängigen Entwicklungsumgebungen wie Visual Studio Code, Visual Studio, JetBrains IDEs, Vim/Neovim, Xcode und Azure Data Studio. In Visual Studio Code werden darüber hinaus Bearbeitungsvorschläge für die wahrscheinlich nächste Änderung sowie die Funktion Copilot Edits für Änderungen in mehreren Dateien bereitgestellt.Der Copilot-Chat kann in Visual Studio Code, Visual Studio, JetBrains IDEs, auf GitHub Mobile und GitHub.com verwendet werden. Individuelle Anweisungen und die Nutzung von Prompt-Dateien sind ebenfalls integriert, jedoch teilweise auf bestimmte Plattformen beschränkt.
Darüber hinaus umfasst es die Nutzung im CLI, im Windows Terminal sowie die Möglichkeit, Vorschläge zu blockieren, die öffentlichem Code entsprechen.Zudem erhalten Nutzerinnen und Nutzer Zugang zu modernen KI-Modellen wie Claude Sonnet 3.5, Gemini 2.0 Flash und o3-mini sowie die Möglichkeit, Copilot-Erweiterungen in verschiedenen Plattformen zu nutzen.Die Nutzung von Copilot Free ist jedoch begrenzt. Pro Monat sind lediglich 2000 Code-Vervollständigungen und 50 Chat-Nachrichten möglich, was auch für die Verwendung in der Kommandozeile und im Windows Terminal Gültigkeit besitzt.
Die Nutzung von Copilot Free ist jedoch limitiert, da pro Monat lediglich 2000 Code-Vervollständigungen und 50 Chat-Nachrichten möglich sind. Diese Limitationen gelten gleichermaßen für die Verwendung in der Kommandozeile sowie im Windows Terminal.
Aufgrund fehlender Funktionen wie Zugriffskontrolle, Audit-Logs, Richtlinienmanagement, Datei-Ausschlüsse, Nutzungsdaten und rechtlicher Schutz (Indemnifizierung) ist Copilot Free für den Unternehmenseinsatz nicht geeignet.
GitHub Copilot Pro
GitHub Copilot Pro bietet im Vergleich zur kostenlosen Version erweiterte Funktionen, die vor allem professionelle Entwickler und Teams ansprechen.
- Erweiterte Code-Vervollständigungen
- Intelligentere und kontextbezogene Vorschläge: Copilot Pro bietet genauere und relevantere Code-Vervollständigungen, die auf den gesamten Code und Kontext abgestimmt sind.
- Unterstützung für mehr Programmiersprachen: Copilot Pro unterstützt eine größere Anzahl an Programmiersprachen und Frameworks, was es für eine breitere Palette an Projekten geeignet macht.
- Copilot Chat
- Interaktive Konversation: Copilot Pro ermöglicht die Nutzung von Copilot Chat, bei dem Entwickler mit dem Tool in natürlicher Sprache kommunizieren können, um Fragen zu klären oder Code zu verbessern.
- Verfügbarkeit in mehr IDEs: Copilot Chat ist in Visual Studio, Visual Studio Code, JetBrains IDEs und GitHub.com verfügbar.
- Individuelle Anweisungen
- Anpassung der Code-Vervollständigung: Entwickler können individuelle Anweisungen und Präferenzen festlegen, um die Vorschläge besser an ihre Arbeitsweise und den spezifischen Projektbedarf anzupassen.
- Erweiterte Funktionen in der Codebearbeitung
- Multi-File Editing: Copilot Pro unterstützt die Bearbeitung und Verbesserung von Code über mehrere Dateien hinweg.
- Projektspezifische Vorschläge: Die Vorschläge berücksichtigen spezifische Projektanforderungen und Strukturen.
- Kollaborative Funktionen
- Team- und Projektarbeit: Copilot Pro ermöglicht die bessere Integration in Teamarbeit und das gemeinsame Bearbeiten von Code in großen Projekten.
- Verknüpfung von Teamdaten: Funktionen zur Verwaltung von Codes und Projekten auf Teamebene werden unterstützt, einschließlich Benutzerrollen und Berechtigungen.
- Erweiterter Zugang zu Modellen
- Zugang zu leistungsstärkeren Modellen: Copilot Pro bietet Zugang zu fortgeschrittenen Sprachmodellen (z.B. GPT-4-basierte Modelle) für genauere und leistungsfähigere Vorschläge.
- Sicherheit und Compliance
- Bessere Sicherheitsfunktionen: Copilot Pro bietet fortschrittlichere Sicherheitsfunktionen wie die Erkennung und Vermeidung von unsicherem Code und Datenschutzproblemen.
- Verwendung in Unternehmensumgebungen: Die Pro-Version bietet erweiterte Möglichkeiten für die Verwaltung von Teams, die Nachverfolgung von Änderungen und die Einhaltung von Standards.
- Integration mit weiteren Tools
- Erweiterte Integrationen: Copilot Pro lässt sich besser mit anderen Entwicklungs- und CI/CD-Tools integrieren, was den Workflow in größeren Teams verbessert.
- Priorisierte Unterstützung
- Schnellere Hilfe: Copilot Pro bietet priorisierten Support bei Problemen oder Fragen, was insbesondere für professionelle Entwicklerteams von Vorteil ist.
GitHub Projects
GitHub Projects ist ein flexibles Projektmanagement-Tool, das direkt in GitHub-Repositories integriert ist. Es ermöglicht Teams, anpassbare Projektboards zu erstellen, Issues und Pull Requests zu verfolgen und Workflows mithilfe von Kanban-Spalten oder Tabellenansichten zu verwalten. Mit Funktionen wie automatisierten Workflows, benutzerdefinierten Feldern und verschiedenen Visualisierungsoptionen hilft GitHub Projects Teams dabei, Arbeit über mehrere Repositories hinweg zu organisieren, zu priorisieren und zu verfolgen. Dieses Tool verbessert die Zusammenarbeit, erhöht die Transparenz und optimiert Projektmanagement-Prozesse, sodass Entwickler und Stakeholder leichter auf Projektziele und Fortschritte abgestimmt bleiben können.
Es beinhaltet Folgendes:
1-Projektplanung
2-Kanban-Boards
3-Roadmaps
4-Automatisierungen
1-Projektplanung
Die Projektplanung auf GitHub ist ein umfassender Prozess, der die integrierten Tools der Plattform nutzt, um Softwareentwicklungsprojekte effizient zu organisieren, zu verfolgen und zu verwalten. Typischerweise werden Funktionen wie Issues zur Aufgabenverfolgung, Projects für Kanban-Boards, Milestones zur Gruppierung verwandter Issues und Pull Requests sowie Labels zur Kategorisierung verwendet. Diese Tools, kombiniert mit den kollaborativen Funktionen von GitHub wie Pull Requests und Code Reviews, ermöglichen es Teams, strukturierte Workflows zu erstellen, Prioritäten festzulegen, Aufgaben zuzuweisen und den Fortschritt während des gesamten Entwicklungslebenszyklus zu überwachen. Indem das Projektmanagement auf derselben Plattform zentralisiert wird, die auch für die Versionskontrolle verwendet wird, vereinfacht GitHub die Kommunikation und steigert die Produktivität von Entwicklungsteams jeder Größe.
Wichtige Punkte:
- Meilensteine: Diese werden verwendet, um verwandte Issues und Pull Requests unter einem bestimmten Ziel zu gruppieren, wie z. B. ein Feature-Release oder eine Projektphase (z. B. „Alpha-Version“).
- Issues: Dies sind einzelne Aufgaben oder Fehler, die gelöst werden müssen, um den Meilenstein zu erreichen.
- Projektboards: Können verwendet werden, um die Aufgaben und den Fortschritt zu visualisieren.
Beispiel:
- Meilenstein: „Version 1.0 Release“ (Fälligkeitsdatum: 30. April)
- Aufgaben wie:
- Issue 1: API-Integration implementieren
- Issue 2: Unit-Tests schreiben
- Issue 3: Frontend-UI gestalten
- Aufgaben wie:
- Jede Aufgabe wird verfolgt, um sicherzustellen, dass das Projekt den Termin einhält.
2-Kanban-Boards
Auf GitHub bieten Kanban-Boards eine visuelle Darstellung von Issues, während sie sich durch den Entwicklungsprozess bewegen.
Ein Kanban-Board besteht typischerweise aus Spalten, die verschiedene Phasen oder Zustände darstellen, wie z. B. „To-Do“ (Zu erledigen), „In Progress“ (In Bearbeitung) und „Done“ (Erledigt). Jeder Issue wird durch eine Karte auf dem Board dargestellt, die zwischen den Spalten verschoben werden kann, sobald sich der Zustand ändert. Benutzer können die Issue-Karten per Drag-and-Drop von einer Spalte in eine andere verschieben, um den Fortschritt oder den Abschluss widerzuspiegeln.
Wichtige Punkte:
- Spalten: Sie repräsentieren verschiedene Phasen im Workflow, wie z. B. „To-Do“ (Zu erledigen), „In Progress“ (In Bearbeitung) und „Done“ (Erledigt).
- Drag-and-Drop: Sie können Issues zwischen den Spalten verschieben, während sie die verschiedenen Phasen durchlaufen.
Beispiel:
- To-Do:
- Issue 1: Benutzerauthentifizierung einrichten
- Issue 2: Wetter-API hinzufügen
- In Progress:
- Issue 3: Login-Seite gestalten
- Done:
- Issue 4: Dokumentation schreiben
Während sich die Projektplanung darauf konzentriert, die übergeordneten Ziele und Aufgaben zu definieren, um diese Ziele zu erreichen, liegt der Fokus von Kanban-Boards auf dem aktuellen Status und Fortschritt dieser Aufgaben.
3-Roadmaps
GitHub Roadmaps sind eine Funktion, die Ihnen dabei hilft, Pläne für Ihre Projekte zu visualisieren und zu organisieren. Sie ermöglichen es, eine übergreifende Übersicht über Meilensteine und Ziele zu erstellen und mit Teammitgliedern an der Planung und Fortschrittsverfolgung zusammenzuarbeiten.
Beispiel:
Stellen Sie sich vor, Sie planen die Roadmap für Ihr WeatherApp-Projekt für die nächsten 6 Monate. Sie können Meilensteine erstellen, um wichtige Phasen darzustellen, wie z. B.:
- Meilenstein 1: Alpha-Version
- Features: Grundlegende Wetterdatenerfassung.
- Fälligkeitsdatum: 1. Mai
- Meilenstein 2: Beta-Version
- Features: Vollständige API-Integration und Mobile-App-Design.
- Fälligkeitsdatum: 1. Juli
- Meilenstein 3: Version 1.0
- Features: Alle Kernfunktionen, optimiertes UI/UX und umfassende Tests.
- Fälligkeitsdatum: 1. September
Die Roadmap zeigt eine Übersicht über die wichtigsten Ziele und Fristen und hilft dem Team, auf Kurs zu bleiben. Sie können einzelne Issues mit diesen Meilensteinen verknüpfen, um sicherzustellen, dass die Aufgaben mit den Projektzielen übereinstimmen.
4-Automatisierungen
Um Ihrem GitHub-Projekt Automatisierung hinzuzufügen, können Sie integrierte Workflows verwenden, die Aktionen auslösen, wie z. B. das Setzen von Feldern bei Änderungen an Elementen oder das Archivieren von Elementen, die bestimmte Kriterien erfüllen. Sie können auch die automatische Hinzufügung von Elementen aus Repositories basierend auf übereinstimmenden Kriterien konfigurieren
Beispiel:
Angenommen, Sie möchten die Aufgabenverfolgung automatisieren und Issues basierend auf dem Status von Pull Requests (PRs) durch den Workflow bewegen.
Sie können eine Automatisierungsregel einrichten, wie z. B.:
- Wenn ein PR gemerged wird, wird das zugehörige Issue automatisch in die Spalte „Done“ verschoben.
Ein weiteres Beispiel ist das automatische Hinzufügen von Labels:
- Wenn ein Bug gemeldet wird, wird das Label „bug“ automatisch zum Issue hinzugefügt.
- Wenn eine Aufgabe zugewiesen wird, könnte das System automatisch ein „High Priority“-Label zuweisen.
Dies könnte mit GitHub Actions umgesetzt werden, um diese Änderungen basierend auf definierten Kriterien (z. B. PR-Merge) auszulösen.
Git Hooks
Git Hooks sind Skripte, die automatisch an bestimmten Punkten während des Git-Workflows ausgeführt werden, z. B. wenn Sie Änderungen committen, pushen oder aus einem Repository pullen. Diese Skripte können verwendet werden, um verschiedene Aufgaben auszuführen, wie z. B. Code zu validieren, Dateien zu formatieren oder sogar Benachrichtigungen zu senden.
Es gibt zwei Arten von Git Hooks:
- Client-seitige Hooks: Werden auf Ihrem lokalen Rechner ausgeführt, bevor Änderungen committet werden.
- Server-seitige Hooks: Werden auf dem Remote-Server ausgeführt, wenn Sie Änderungen pushen.
Git Hooks sind anpassbare Skripte, die Git automatisch vor oder nach bestimmten Ereignissen ausführt, wie z. B. Commits, Pushes oder Merges. Diese Hooks ermöglichen es Entwicklern, Aufgaben zu automatisieren, Coding-Standards durchzusetzen, Tests auszuführen oder andere Aktionen an wichtigen Punkten im Git-Workflow durchzuführen. Durch die Nutzung von Git Hooks können Teams ihren Entwicklungsprozess verbessern, die Codequalität aufrechterhalten und Konsistenz über Projekte hinweg sicherstellen. Hooks können lokal implementiert oder unter Teammitgliedern geteilt werden, wodurch sie einen leistungsstarken Mechanismus bieten, um Workflows zu optimieren und Best Practices während des gesamten Entwicklungslebenszyklus durchzusetzen.
Client- vs. Server-Hooks
Wie viele andere Versionskontrollsysteme bietet Git die Möglichkeit, benutzerdefinierte Skripte auszuführen, wenn bestimmte wichtige Aktionen stattfinden. Diese Hooks lassen sich in zwei Gruppen einteilen: client-seitig und server-seitig. Client-seitige Hooks werden durch Operationen wie Commits und Merges ausgelöst, während server-seitige Hooks bei Netzwerkoperationen wie dem Empfang gepushter Commits ausgeführt werden.
GitHub API
Die GitHub API ist ein leistungsstarkes Tool, das Entwicklern ermöglicht, programmatisch mit der GitHub-Plattform zu interagieren. Sie bietet Zugriff auf verschiedene GitHub-Funktionen wie Benutzerdaten, Repository-Informationen und Commit-Historie über REST- und GraphQL-Schnittstellen. Die API unterstützt Authentifizierung, implementiert Ratenbegrenzung (Rate Limiting) und bietet Webhooks für Echtzeit-Benachrichtigungen. Dadurch können Entwickler Aufgaben automatisieren, benutzerdefinierte Integrationen erstellen und Anwendungen entwickeln, die die Funktionalität von GitHub nutzen.
1-GraphQL API
Die GitHub GraphQL API ist eine Sammlung von APIs, die Zugriff auf verschiedene GitHub-Funktionen wie Benutzerdaten, Repository-Informationen und Commit-Historie bietet. Sie ermöglicht Entwicklern, programmatisch mit der GitHub-Plattform über GraphQL-Abfragen zu interagieren.
2-REST API
Die GitHub REST API ist eine Sammlung von APIs, die Zugriff auf verschiedene GitHub-Funktionen wie Benutzerdaten, Repository-Informationen und Commit-Historie bietet. Sie ermöglicht Entwicklern, programmatisch mit der GitHub-Plattform zu interagieren.
Merge-Strategien
Wenn Änderungen von einem Branch in einen anderen zusammengeführt werden, bietet Git verschiedene Merge-Strategien zur Auswahl. Diese Methoden ermöglichen Flexibilität und Anpassung bei der Integration von Code-Updates in Ihren Hauptbranch. Die verfügbaren Optionen umfassen:
- Fast Forward (FF)
- Non-Fast Forward
- Rebase
- Squash
- Cherry Picking
Fast Forward (FF)
- Was es ist: Der „Fast-Forward“-Merge erfolgt, wenn der aktuelle Branch (normalerweise der Hauptbranch) keine neuen Commits enthält, nachdem der Branch, den Sie zusammenführen möchten, erstellt wurde. In diesem Fall bewegt Git einfach den Zeiger des aktuellen Branches nach vorne auf den neuesten Commit des Feature-Branches. Es wird kein neuer Commit erstellt, da der Branch „vorwärts gespult“ wird, um die Änderungen zu übernehmen.
- Wann man es verwendet: Dies wird typischerweise verwendet, wenn Sie einen Branch zusammenführen, der sich nicht vom Zielbranch abgespalten hat (d. h., es gibt keine neuen Commits im Zielbranch seit der Erstellung des Branches).
git checkout main
git merge feature-branch
Non-Fast Forward
- Was es ist: Dies tritt auf, wenn der Branch, den Sie zusammenführen möchten, vom aktuellen Branch abgewichen ist, d. h., der Zielbranch enthält Commits, die nicht im Feature-Branch vorhanden sind. In diesem Fall erstellt Git einen neuen Merge-Commit, um die beiden Branches zu kombinieren, auch wenn ein Fast-Forward möglich gewesen wäre. Dadurch wird sichergestellt, dass der Verlauf unverändert erhalten bleibt.
- Wann man es verwendet: Non-Fast-Forward-Merges sind nützlich, um eine klare Historie der Feature-Entwicklung zu bewahren, insbesondere wenn Sie den Kontext erhalten und die Commit-Historie der verschiedenen Branches getrennt halten möchten.
Beispiel:
git checkout main
git merge feature-branch
Rebase
- Was es ist: Rebasing ist eine Strategie, bei der die Änderungen eines Branches auf die Basis eines anderen Branches „neu abgespielt“ werden. Im Wesentlichen wird die Historie umgeschrieben, indem Ihre Änderungen auf den aktuellen Branch angewendet werden. Dies erzeugt eine lineare Historie, die übersichtlicher und leichter verständlich sein kann.
- Wann man es verwendet: Rebasing wird verwendet, wenn Sie Änderungen aus dem Basis-Branch in Ihren Feature-Branch integrieren möchten oder wenn Sie Ihre Commit-Historie als einen einzigen Strom von Commits darstellen möchten, ohne unnötige Merge-Commits.
- Beispiel:
git checkout feature-branch
git rebase main
Squash
- Was es ist: Beim Squashing werden alle Änderungen aus Ihrem Feature-Branch in einen einzigen Commit zusammengefasst, bevor sie in den Zielbranch gemerged werden. Dies ist nützlich, wenn Sie Ihre Historie sauber halten möchten und nicht alle Zwischencommits anzeigen möchten, die während der Entwicklung gemacht wurden.
- Wann man es verwendet: Squashing ist nützlich, wenn Sie eine Reihe von kleinen, inkrementellen Commits haben, die für sich genommen nicht besonders aussagekräftig sind, und Sie sie in einen Commit verdichten möchten, der in den Hauptbranch gemerged wird.
- Beispiel:
git checkout main
git merge –squash feature-branch
git commit
Cherry Picking
- Was es ist: Cherry Picking ermöglicht es, einen bestimmten Commit von einem Branch auf einen anderen zu übertragen, anstatt den gesamten Branch zu mergen. Dies ist nützlich, wenn Sie einen oder mehrere einzelne Commits aus einem anderen Branch übernehmen möchten, ohne alle Änderungen aus diesem Branch zu integrieren.
- Wann man es verwendet: Cherry-Picking wird oft verwendet, wenn Sie spezifische Fixes oder Features aus einem Branch in einen anderen übernehmen möchten, aber nicht alles aus dem Branch übernehmen wollen (z. B. nur Bugfixes aus einem Feature-Branch).
- Beispiel:
git checkout main
git cherry-pick <Commit-Hash>
Diese Strategien bieten Flexibilität, je nachdem, welches Ergebnis Sie für Ihr Projekt wünschen. Sie ermöglichen es Ihnen, die Commit-Historie und die Branch-Integration so zu verwalten, dass sie zu Ihrem Workflow passt.
Quellen :
- https://www.atlassian.com/git/tutorials/what-is-version-control
- https://medium.com/@pascalchinedu2000/git-vs-other-vcs-a-comparative-analysis-5cb03ad58e0e
- https://github.com/pricing#compare-features
- https://docs.github.com/de/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-free/about-github-copilot-free
- https://kinsta.com/knowledgebase/what-is-github
- https://www.w3schools.com/whatis/whatis_github.asp
- https://www.techtarget.com/searchitoperations/definition/GitHub
- https://www.geeksforgeeks.org/what-is-github-and-how-to-use-it/