Git ist ein leistungsstarkes Versionskontrollsystem und wird weltweit von Entwicklern genutzt. Doch was ist Git? Diese Frage stellen sich viele Einsteiger. Die Git-Bedeutung liegt in der verteilten Versionsverwaltung mit Git, die eine effiziente Zusammenarbeit ermöglicht. Während Plattformen wie GitHub, GitLab und Bitbucket populär sind, kann Git als Software auch lokal auf einem eigenen Server betrieben werden. Was bei den meisten unsere Tarife der Fall ist. Die Git-Funktionsweise basiert auf Snapshots des Quellcodes, die in einem Git-Repository gespeichert werden. Dadurch können Änderungen dokumentiert und nachverfolgt werden. Die Git-Dokumentation hilft dabei, die wichtigsten Befehle zu verstehen. Dieser Beitrag erklärt die Git Arbeitsweise und zeigt wie Sie ein Git-Repository sowie Git Hooks anlegen. Kurz gesagt zeigen wir Ihnen, wie Sie Git auf Ihrem eigenen Server effektiv nutzen können.
Warum Git für Ihr Projekt wichtig ist
Bevor wir uns der Praxis widmen, ein Überblick über die Vorteile der Git-Versionsverwaltung:
- Git-Definition: Verteilte Versionskontrolle mit Git ermöglicht das Arbeiten an Softwareprojekten ohne zentrale Serverabhängigkeit.
- Git-Erklärung für Einsteiger: Änderungen werden mit Git-Merge verwaltet, sodass mehrere Entwickler parallel arbeiten können.
- Bessere Nachvollziehbarkeit: Jeder Git-Commit bleibt gespeichert, um ältere Versionen wiederherzustellen.
- Git-GUI-Unterstützung: Einfache Verwaltung über grafische Tools wie GitHub Desktop Download oder Git Extensions Download.
- Automatisierte Deployments: Mit Git-Hooks lassen sich Änderungen direkt auf Server übertragen.
Die wichtigsten Git Funktion als Merkhilfe
Bei der täglichen Arbeit ist es ratsam einen GIT Client mit grafischer Oberfläche zu nutzen, jedoch kann man die Befehle wie nachfolgend kurz beschrieben auch auf der Shell verwenden.
Erste Schritte
- Per SSH auf das Webpaket verbinden und in das GIT repository wechseln. Mit git init ‚reposname‘ ein neues Verzeichnis erstellen. Verbindung trennen.
- Lokal das Verzeichnis Clonen: z.B. git clone ssh://username@server.serverdomain.org/home/git/testordner ~/Desktop/mein-repository. Hier wird das SSH Passwort notwendig, bequemer ist ein SSH Key.
- Lokal Dateien anpassen und mit git add . zur Staging-Area hinzufügen und mit git commit -m ‚Mein Kommentar zum Commit‘ sichern.
- Status prüfen mit git status, Historie ansehen mit git log.
Arbeiten mit Branches
- Git Create Branch: Ein neuer Branch entsteht mit git branch feature-xyz
- Wechsel zu einem Branch mit git checkout feature-xyz.
- Änderungen zusammenführen mit git merge feature-xyz.
- Falls nötig: Git Rename Branch, um Branch-Namen umzubenennen.
Fehlerkorrekturen mit Git
- Git Revert Commit: Rückgängig machen eines fehlerhaften Commits.
- Git Revert Last Commit: Letzten Commit anpassen, ohne Historie zu überschreiben.
- Git Cherry Pick: Einzelne Commits in andere Branches übernehmen.
Nützliche Programme mit grafischer Oberfläche
Die Nutzung eines Git-Programms mit grafischer Oberfläche kann besonders für Einsteiger, aber auch für erfahrene Entwickler, viele Vorteile bieten. Ein gutes Beispiel hierfür ist Sourcetree, ein kostenloser Git-Client mit einer benutzerfreundlichen Oberfläche, der komplexe Git-Prozesse vereinfacht und übersichtlich darstellt.
- Einfache Bedienung ohne Kommandozeile. Während Git über die Kommandozeile (CLI) gesteuert wird, kann Sourcetree alle wichtigen Befehle visuell darstellen und per Mausklick ausführen. Das erspart das Merken langer Befehle und reduziert Fehlerquellen, insbesondere für Nutzer, die mit Git noch nicht vertraut sind.
- Visuelle Darstellung von Branches und Commits. Ein großer Vorteil von Sourcetree ist die grafische Darstellung der Git-Historie. Branches, Commits und Merge-Vorgänge werden als übersichtliches Diagramm dargestellt, sodass Nutzer jederzeit nachvollziehen können, wie sich das Projekt entwickelt hat. Dies ist besonders hilfreich, wenn mehrere Personen an einem Projekt arbeiten.
- Einfache Verwaltung von Branches und Merges. In der Kommandozeile müssen Branches mit „git branch“, „git checkout“ und „git merge“ verwaltet werden. In Sourcetree hingegen können neue Branches, Wechsel zwischen Entwicklungszweigen oder das Zusammenführen von Änderungen mit wenigen Klicks erledigt werden – ohne sich Befehle merken zu müssen.
- Staging und Commits per Drag & Drop. Anstatt mit „git add“ und „git commit“ zu arbeiten, können Nutzer in Sourcetree Dateien einfach per Drag & Drop dem Staging-Bereich hinzufügen und Commits mit einer verständlichen Oberfläche erstellen. Das macht den Arbeitsprozess intuitiver und übersichtlicher.
- Einfache Zusammenarbeit mit Remote-Repositories. Sourcetree unterstützt nahtlos die Verbindung zu Plattformen wie GitHub aber auch zu unseren Servern. Nutzer können Repositories klonen, Änderungen pushen oder neue Pull Requests direkt über die grafische Oberfläche erstellen – ohne SSH- oder Terminal-Befehle verwenden zu müssen.
- Konfliktmanagement bei Merge-Konflikten. Einer der schwierigsten Aspekte in Git ist das Auflösen von Merge-Konflikten. Sourcetree bietet eine visuelle Darstellung von Konflikten und hilft dabei, Unterschiede zwischen Dateiversionen direkt im Interface zu bearbeiten, anstatt sich durch Diff-Befehle in der Kommandozeile zu kämpfen.
- Ideal für Einsteiger und Fortgeschrittene. Während Anfänger von der intuitiven Bedienung profitieren, können Fortgeschrittene mit Sourcetree auch komplexe Repositories verwalten und tiefgehende Analysen ihrer Codebasis durchführen. Das Programm bleibt eine leistungsstarke Alternative zur Kommandozeile, ohne deren Funktionsumfang einzuschränken.
Fortgeschrittene Funktionen und Best Practices für die Verwendung von Git
Sobald Sie die Grundlagen von Git beherrschen, können Sie sich mit fortgeschrittenen Funktionen befassen, die Ihre Versionskontrolle noch effizienter machen. Eine der wichtigsten Techniken ist das Branching, mit dem Sie parallel an verschiedenen Features oder Fixes arbeiten können. Ein neuer Entwicklungszweig lässt sich einfach mit git create branch <branch-name> erstellen. Dies ermöglicht es, Änderungen isoliert vorzunehmen, ohne den Hauptzweig zu beeinträchtigen. Ein weiterer essenzieller Aspekt für eine saubere Zusammenarbeit im Team ist die regelmäßige Synchronisation mit dem zentralen Repository. Nutzen Sie dazu git pull und git fetch, um sicherzustellen, dass Sie stets die neuesten Änderungen Ihrer Kollegen haben. Dies hilft, Merge-Konflikte zu vermeiden und das Projekt aktuell zu halten.
Falls Sie einen Fehler in einem früheren Commit entdecken, gibt es verschiedene Möglichkeiten zur Korrektur. Mit git revert commit können Sie einen bestimmten Commit rückgängig machen, ohne dabei die gesamte Historie zu überschreiben. Falls der letzte Commit falsch war, hilft git revert last commit, um diesen zu annullieren, ohne nachfolgende Änderungen zu beeinträchtigen. Für die Verwaltung von Branches ist es manchmal notwendig, Branch-Namen zu ändern, beispielsweise um sie besser verständlich zu machen. Dies gelingt mit git rename branch <alter-name> <neuer-name>. Wenn Sie nur eine bestimmte Änderung aus einem anderen Branch übernehmen möchten, ohne den gesamten Branch zu mergen, können Sie git cherry-pick <commit-hash> verwenden. Dies ist besonders nützlich, wenn ein bestimmter Fix benötigt wird, aber der gesamte Entwicklungszweig noch nicht bereit für ein vollständiges Merge ist. Das Zusammenführen von Branches gehört zum Alltag mit Git. Standardmäßig geschieht dies mit git merge <branch-name>, um die Änderungen eines Branches in den aktuellen Zweig zu übernehmen. Doch Vorsicht: Falls sich die Commits stark unterscheiden, kann es zu Merge-Konflikten kommen, die manuell aufgelöst werden müssen.
Eine fortgeschrittene Technik zur Bereinigung der Commit-Historie ist das Rebase. Anstatt eine Merge-Historie mit mehreren Verzweigungen zu hinterlassen, erlaubt git rebase, Änderungen auf eine saubere Commit-Reihe umzuorganisieren. Diese Technik ist jedoch mit Vorsicht zu genießen, da sie die Historie verändert und sich nicht für öffentliche Branches eignet. Ein bewährter Best Practice ist es, regelmäßig in die Git-Dokumentation zu schauen, um neue Befehle und Funktionen zu entdecken.
Sie bietet eine umfassende Übersicht über alle Git-Kommandos und Best Practices. Ebenso wichtig ist es, Repositories regelmäßig zu sichern und gut zu dokumentieren, um sich später viel Zeit und Ärger zu ersparen.
Git ist ein äußerst mächtiges Werkzeug – je besser Sie es verstehen und gezielt einsetzen, desto effizienter und fehlerfreier wird Ihr Workflow.
Automatische Deployments mit Git-Hooks – Effizientes Arbeiten mit Git
Automatische Deployments mit Git-Hooks ermöglichen es, Änderungen an einem Git-Repository direkt nach einem Commit oder Push automatisch auf einen Server zu übertragen und dort bereitzustellen. Dadurch entfällt das manuelle Hochladen von Dateien, und der Code wird bei jeder Aktualisierung sofort auf dem Server ausgerollt.Wie funktionieren Git-Hooks?
Git-Hooks sind Skripte, die automatisch ausgeführt werden, wenn bestimmte Git-Ereignisse eintreten, z. B. ein Commit, Push oder Merge. Diese Skripte werden im
.git/hooks-Verzeichnis eines Repositories gespeichert und können in Shell, Python oder anderen Skriptsprachen geschrieben werden.
Für automatische Deployments wird oft der Post-Receive-Hook genutzt. Dieser Hook wird auf einem Remote-Server (z. B. einem Webserver) ausgelöst, sobald ein neuer Code-Push erfolgt ist. Er kann dann automatisch den neuesten Stand aus dem Git-Repository auschecken und in das Live-System übertragen.
Was wird für ein automatisches Deployment mit Git-Hooks benötigt?
Voraussetzung für das folgende Beispiel ist, dass Sie bereits ein Repository und Ihre Arbeitskopie eingerichtet haben. Verbinden Sie sich nun per SSH auf den Server/Webpaket und erstellen Sie ein Script namens „post-receive“ im Ordner:
/home/git/ihr-repos/hooks/
z.B. mit dem Nano Editor: nano post-receive mit folgendem Inhalt:
TARGET=“/home/www/testwebseite“
GIT_DIR=“/home/git/ihr-repos/.git“
echo „Empfangener Push – Deployment startet…“
# Arbeitsverzeichnis aktualisieren
cd $GIT_DIR || exit
BRANCH=“main“
GIT_WORK_TREE=$TARGET git checkout -f $BRANCH
echo „Deployment abgeschlossen.“
Machen Sie nach dem Speichern die Datei mit folgendem Befehl ausführbar: chmod +x post-receive.
Wenn Sie nun lokal einen Push durchführen, d.h. git add . -> git commit -m „Mein Kommentar“ -> git push, sollten Sie nach der Eingabe des SSH-Kennworts die oben genannten Echo- und Git-Kontrollmeldungen erhalten, und die Dateien Ihres Repositories sollten in den Ordner /home/www/testwebseite kopiert worden sein.
Neben einer automatischen Kopie lassen sich noch weitere Kommandos mit Git verbinden.
Warum Git die beste Wahl für Versionsverwaltung ist
Git ist eine der besten Versionsverwaltungen, weil es dezentral, schnell und flexibel ist. Es ermöglicht Entwicklern, Änderungen nachzuverfolgen, gemeinsam an Code zu arbeiten und verschiedene Versionen effizient zu verwalten. Dank Branching können Teams parallel an Features arbeiten, ohne sich gegenseitig zu blockieren. Zudem sorgt Distributed Version Control dafür, dass jeder Entwickler eine vollständige Kopie des Repositories hat, wodurch keine zentrale Instanz erforderlich ist. Git ist branchenweit etabliert, Open Source und bietet eine Vielzahl an Integrationen, was es zur bevorzugten Wahl für Softwareentwicklung macht. Und das beste daran: Git ist auf den meisten unserer Webpakete und Server direkt einsetzbar.
Unser Hosting im Überblick