Die wichtigsten Git-Grundlagen für den Entwickler-Alltag

Update: Dienstag, 16. Juni

Git ist aus dem modernen Entwickler-Alltag kaum noch wegzudenken. Ob eigene Website, Kundenprojekt, App, Script-Sammlung oder großes Team-Repository: Mit Git lassen sich Änderungen nachvollziehen, Versionen sichern, Experimente sauber trennen und Fehler gezielt rückgängig machen. Trotzdem wirkt Git am Anfang oft komplizierter, als es eigentlich ist. Begriffe wie Commit, Branch, Merge, Rebase, Reset, Cherry Pick oder Tag klingen technisch, sind im Alltag aber vor allem praktische Werkzeuge, um strukturiert und sicher an Code zu arbeiten.

Dieser Artikel erklärt die wichtigsten Git-Grundlagen verständlich und praxisnah. Du lernst, wie Git grundsätzlich funktioniert, welche Befehle und Konzepte du kennen solltest und wie du unter Windows mit TortoiseGit viele Aufgaben bequem per Kontextmenü erledigst. Besonders wichtig ist dabei das sichere Arbeiten mit dem master Branch, das Zusammenführen von Änderungen und das gezielte Zurückspringen auf ältere Versionen.

Wenn du dich allgemein für Softwareentwicklung interessierst, findest du auf Andinet auch weitere passende Beiträge rund um Softwareerstellung und Programmierung, Python-Tipps für Entwickler und KI für Entwickler.

Git Grundlagen für Entwickler mit Branches Commits Merge Rebase und Versionskontrolle im Entwickler-Alltag

 

Was ist Git und warum ist es im Entwickler-Alltag so wichtig?

Git ist ein verteiltes Versionskontrollsystem. Es speichert nicht einfach nur einzelne Dateien, sondern den Verlauf eines Projekts. Dadurch kannst du jederzeit nachvollziehen, wann welche Änderung gemacht wurde, wer sie vorgenommen hat und warum sie notwendig war. Für Entwickler ist das enorm wertvoll, weil Software nie statisch ist: Funktionen werden erweitert, Fehler werden behoben, Dateien werden umstrukturiert und manchmal muss man eine Änderung wieder rückgängig machen.

Der große Vorteil von Git besteht darin, dass du nicht nur eine aktuelle Projektversion hast, sondern eine komplette Historie. Du kannst also experimentieren, neue Funktionen in separaten Zweigen entwickeln und später entscheiden, ob du sie übernimmst. Gleichzeitig kannst du alte Stände wiederherstellen, einzelne Fehlerkorrekturen übernehmen oder problematische Änderungen rückgängig machen.

Typische Vorteile von Git

  • Nachvollziehbarkeit: Jede Änderung kann mit Commit-Nachricht dokumentiert werden.
  • Sicherheit: Fehlerhafte Änderungen lassen sich gezielt zurücknehmen.
  • Teamarbeit: Mehrere Entwickler können parallel am gleichen Projekt arbeiten.
  • Experimentieren: Neue Ideen können in Branches getestet werden, ohne den stabilen Stand zu gefährden.
  • Release-Verwaltung: Wichtige Versionen lassen sich mit Tags markieren.
  • Offline-Arbeiten: Viele Git-Funktionen funktionieren lokal, auch ohne Serververbindung.

Git ist damit nicht nur für große Softwareteams interessant. Auch Einzelentwickler, Webseitenbetreiber, Freelancer und Hobbyprogrammierer profitieren davon. Gerade bei eigenen Projekten, Skripten, Webseiten oder Tools verhindert Git, dass wichtige Änderungen verloren gehen oder unübersichtlich werden.

 

Die Grundidee: Repository, Working Tree, Staging Area und Commit

Um Git wirklich zu verstehen, sollte man die wichtigsten Bereiche kennen. Ein Git-Projekt besteht nicht nur aus den Dateien, die du im Explorer siehst. Git unterscheidet mehrere Zustände, die im Alltag sehr wichtig sind.

Repository

Das Repository ist der eigentliche Git-Speicher. Dort liegen die komplette Historie, alle Commits, Branches, Tags und Metadaten. In einem lokalen Git-Projekt befindet sich dieser Bereich im versteckten Ordner .git. Dieser Ordner ist das Herzstück des Projekts. Wird er gelöscht, bleiben zwar die aktuellen Dateien erhalten, aber die Git-Historie ist weg.

Working Tree

Der Working Tree ist dein aktueller Arbeitsstand. Das sind die Dateien, die du im Editor öffnest, änderst, löschst oder neu erstellst. Wenn du beispielsweise eine PHP-Datei, ein Python-Script oder eine HTML-Seite bearbeitest, änderst du zunächst nur den Working Tree.

Staging Area

Die Staging Area ist eine Art Vorbereitungsliste für den nächsten Commit. Du entscheidest, welche geänderten Dateien in den nächsten Commit aufgenommen werden sollen. Das ist sehr praktisch, weil du nicht automatisch alle Änderungen speichern musst. Du kannst gezielt nur die zusammengehörenden Änderungen auswählen.

Commit

Ein Commit ist ein gespeicherter Projektstand. Er enthält die ausgewählten Änderungen, eine eindeutige ID, den Autor, den Zeitpunkt und eine Commit-Nachricht. Gute Commit-Nachrichten helfen später enorm, die Entwicklung eines Projekts zu verstehen.

Ein typischer Ablauf sieht so aus:

git status
git add index.html
git commit -m "Improve homepage introduction"

Mit git status prüfst du den aktuellen Zustand, mit git add übernimmst du Dateien in die Staging Area und mit git commit speicherst du daraus einen neuen Stand in der Historie.

 

Die wichtigsten Git-Befehle für den Alltag

Auch wenn viele Entwickler unter Windows gerne mit TortoiseGit arbeiten, ist es hilfreich, die wichtigsten Git-Befehle zu kennen. Sie erklären, was im Hintergrund passiert, und helfen bei Problemen, Fehlermeldungen oder Anleitungen im Internet.

Status anzeigen

git status

Dieser Befehl zeigt, welche Dateien geändert, neu, gelöscht oder bereits zum Commit vorgemerkt sind. Er ist einer der wichtigsten Git-Befehle überhaupt und sollte regelmäßig verwendet werden.

Änderungen anzeigen

git diff

Mit git diff siehst du konkrete Änderungen in Dateien. So kannst du vor einem Commit prüfen, ob wirklich nur die gewünschten Anpassungen enthalten sind.

Dateien vormerken

git add dateiname.html
git add .

Mit git add werden Änderungen in die Staging Area übernommen. git add . fügt alle aktuellen Änderungen hinzu. Das ist bequem, sollte aber bewusst eingesetzt werden, damit keine temporären Dateien oder versehentlichen Änderungen im Commit landen.

Commit erstellen

git commit -m "Fix navigation links"

Ein Commit sollte möglichst eine abgeschlossene, verständliche Änderung enthalten. Statt viele unterschiedliche Anpassungen in einem riesigen Commit zu sammeln, ist es oft besser, mehrere kleinere Commits zu erstellen.

Historie anzeigen

git log
git log --oneline

Die Historie zeigt ältere Commits. Besonders praktisch ist git log --oneline, weil jeder Commit kompakt in einer Zeile dargestellt wird.

Änderungen vom Server holen

git fetch
git pull

git fetch lädt Informationen vom entfernten Repository, ändert aber deinen aktuellen Arbeitsstand noch nicht. git pull lädt Änderungen und integriert sie direkt in deinen Branch. In Teams ist es sinnvoll, vor neuen Arbeiten regelmäßig den aktuellen Stand zu holen.

Änderungen veröffentlichen

git push

Mit git push werden lokale Commits auf ein entferntes Repository übertragen, zum Beispiel auf GitHub, GitLab, Bitbucket oder einen eigenen Git-Server.

 

Branches verstehen: Warum Git mit Zweigen arbeitet

Branches sind eines der wichtigsten Konzepte in Git. Ein Branch ist ein Entwicklungszweig. Er zeigt auf einen bestimmten Commit und bewegt sich weiter, wenn neue Commits auf diesem Branch entstehen. Dadurch kannst du mehrere Entwicklungsstände parallel verwalten.

Ein typisches Beispiel:

  • Der master Branch enthält den stabilen Stand des Projekts.
  • Ein neuer Branch feature-login enthält eine neue Login-Funktion.
  • Ein Branch bugfix-navigation behebt einen Fehler in der Navigation.
  • Nach erfolgreichem Test werden die Änderungen zurück in den master Branch gemerged.

Branches machen Git besonders flexibel. Du kannst neue Funktionen entwickeln, ohne den stabilen Projektstand zu gefährden. Außerdem kann jeder Entwickler an einem eigenen Thema arbeiten, ohne anderen ständig in die Quere zu kommen.

In vielen neueren Projekten heißt der Hauptbranch heute main. In vielen bestehenden Projekten, älteren Repositories und Windows-Workflows wird aber weiterhin master verwendet. Dieser Artikel bezieht sich deshalb bewusst auf den master Branch.

 

Arbeiten mit dem master Branch: Stabilität vor Bequemlichkeit

Der master Branch sollte in vielen Projekten den stabilen oder zumindest zentralen Entwicklungsstand enthalten. Das bedeutet: Nicht jede spontane Änderung gehört direkt auf master. Besonders bei größeren Projekten ist es sinnvoll, neue Funktionen oder riskante Anpassungen zunächst in einem separaten Branch zu entwickeln.

Gute Regeln für den master Branch

  • Der master Branch sollte möglichst jederzeit lauffähig sein.
  • Neue Funktionen sollten zuerst in Feature-Branches entstehen.
  • Fehlerbehebungen können in eigenen Bugfix-Branches vorbereitet werden.
  • Vor einem Merge nach master sollte getestet werden.
  • Unklare Experimente gehören nicht direkt auf master.
  • Vor größeren Aktionen sollte ein Pull oder Fetch erfolgen, damit der lokale Stand aktuell ist.

Für kleine Einzelprojekte kann man natürlich direkt auf master arbeiten. Trotzdem ist es auch dort oft sinnvoll, größere Umbauten in einem separaten Branch vorzubereiten. Gerade bei Webseiten, Tools oder Scripts verhindert das, dass ein halb fertiger Zwischenstand versehentlich veröffentlicht wird.

Wer eigene Webprojekte betreut, kann Git sehr gut mit anderen Entwicklungsthemen kombinieren. Passend dazu sind beispielsweise die Andinet-Artikel über AJAX und JavaScript im Web, Website-Geschwindigkeit mit Apache Benchmark und WGET zum Herunterladen ganzer Websites.

 

TortoiseGit unter Windows nutzen: Git bequem per Kontextmenü

TortoiseGit ist ein beliebtes Git-Werkzeug für Windows. Es integriert sich direkt in den Windows Explorer. Dadurch kannst du viele Git-Aktionen per Rechtsklick ausführen, ohne ständig die Kommandozeile zu öffnen. Besonders für Entwickler, die gerne visuell arbeiten oder häufig Dateien im Explorer verwalten, ist TortoiseGit sehr praktisch.

Typische Vorteile von TortoiseGit:

  • Git-Funktionen direkt im Windows-Kontextmenü
  • grafische Anzeige von Änderungen und Historie
  • einfaches Vergleichen von Dateien
  • komfortables Mergen und Lösen von Konflikten
  • Branch-, Tag-, Reset-, Rebase- und Cherry-Pick-Funktionen per Mausklick
  • gute Integration in bestehende Windows-Arbeitsabläufe

Gerade unter Windows ist TortoiseGit eine gute Ergänzung zur Kommandozeile. Viele Aktionen lassen sich grafisch besser überblicken, während die Git-Befehle im Hintergrund trotzdem die gleiche Logik verwenden.

Für effizientes Arbeiten unter Windows lohnt sich außerdem ein Blick auf praktische Tastenkombinationen für Windows. Wer regelmäßig mit Shell, Servern oder Linux-Systemen arbeitet, findet zusätzlich eine hilfreiche Sammlung mit nützlichen Linux-Befehlen und Kommandos.

 

Wichtige TortoiseGit-Funktionen im Überblick

Viele entscheidende Git-Aktionen findest du in TortoiseGit direkt über den Rechtsklick auf einen Ordner, eine Datei oder einen Commit in der Log-Ansicht. Besonders wichtig ist die Log-Ansicht, weil du dort die Commit-Historie sehen und auf einzelne Commits gezielte Aktionen anwenden kannst.

Merge to master

Merge to master bedeutet, dass Änderungen aus einem anderen Branch in den master Branch übernommen werden. Das ist ein typischer Schritt, wenn eine Funktion fertig entwickelt und getestet wurde.

Ein praktischer Ablauf sieht so aus:

  1. Du entwickelst eine neue Funktion in einem Feature-Branch.
  2. Du testest die Änderungen.
  3. Du wechselst auf den master Branch.
  4. Du führst den Feature-Branch per Merge in master zusammen.
  5. Du prüfst das Ergebnis und löst mögliche Konflikte.

Der Merge erzeugt je nach Situation entweder einen neuen Merge-Commit oder übernimmt die Commits direkt, wenn ein Fast-Forward möglich ist. Wichtig ist: Vor einem Merge in master sollte der Arbeitsstand sauber sein. Offene, nicht gespeicherte Änderungen können den Vorgang unnötig kompliziert machen.

Reset master to this

Reset master to this setzt den master Branch auf einen bestimmten Commit zurück. Diese Funktion ist mächtig und sollte vorsichtig verwendet werden, weil sie den Branch-Zeiger verändert. Je nach Reset-Art kann das nur die Branch-Position betreffen oder auch Dateien im Working Tree verändern.

Es gibt verschiedene Reset-Varianten:

  • Soft Reset: Der Branch wird zurückgesetzt, Änderungen bleiben aber vorbereitet oder im Arbeitsbereich erhalten.
  • Mixed Reset: Der Branch wird zurückgesetzt, Änderungen bleiben als lokale Änderungen erhalten, sind aber nicht mehr gestaged.
  • Hard Reset: Der Branch und der Arbeitsstand werden zurückgesetzt. Lokale Änderungen können dabei verloren gehen.

Ein Hard Reset kann sinnvoll sein, wenn du sicher zu einem älteren sauberen Stand zurückkehren möchtest. Er ist aber riskant, wenn noch ungesicherte Arbeit vorhanden ist. Vor einem Reset sollte man deshalb genau prüfen, ob wichtige Änderungen bereits committed oder anderweitig gesichert wurden.

Switch/Checkout to this

Switch/Checkout to this bedeutet, dass du zu einem bestimmten Branch, Tag oder Commit wechselst. In TortoiseGit kannst du damit einen anderen Entwicklungsstand auschecken und die Dateien im Working Tree entsprechend anpassen lassen.

Das ist nützlich, wenn du:

  • einen anderen Branch bearbeiten möchtest,
  • einen alten Stand ansehen willst,
  • prüfen möchtest, wann ein Fehler entstanden ist,
  • einen Release-Stand kontrollieren möchtest.

Wenn du direkt auf einen einzelnen Commit oder Tag wechselst, befindest du dich häufig in einem sogenannten detached HEAD Zustand. Das bedeutet, dass du nicht auf einem normalen Branch arbeitest. Du kannst den Stand ansehen oder testen, solltest dort aber nicht unbedacht weiterentwickeln. Wenn du auf Basis dieses Stands weiterarbeiten möchtest, ist ein neuer Branch sinnvoll.

Rebase master onto this

Rebase master onto this verschiebt die Commits des master Branches so, als wären sie auf Basis eines anderen Commits entstanden. Rebase kann die Historie sauberer und linearer machen, ist aber anspruchsvoller als ein normaler Merge.

Vereinfacht gesagt schreibt Rebase Commit-Historie um. Das kann hilfreich sein, wenn du lokale Änderungen auf einen neueren Stand setzen möchtest oder eine übersichtliche Historie ohne zusätzliche Merge-Commits bevorzugst.

Wichtig ist jedoch: Rebase sollte mit Vorsicht verwendet werden, besonders bei Branches, die bereits mit anderen geteilt wurden. Wenn mehrere Entwickler denselben Branch verwenden und einer davon die Historie per Rebase verändert, kann das zu Verwirrung und Konflikten führen.

Revert changes by this commit

Revert changes by this commit macht die Änderungen eines bestimmten Commits rückgängig, ohne die bestehende Historie zu löschen. Git erstellt dabei einen neuen Commit, der die Änderungen des ausgewählten Commits umkehrt.

Das ist besonders sicher und teamfreundlich. Im Gegensatz zu Reset wird die Historie nicht zurückgeschrieben. Alle sehen weiterhin, dass der ursprüngliche Commit existierte und dass später ein Revert durchgeführt wurde.

Revert eignet sich sehr gut, wenn:

  • ein bereits veröffentlichter Commit fehlerhaft war,
  • eine Funktion aus master entfernt werden soll,
  • eine Änderung rückgängig gemacht werden muss, ohne andere Commits zu verlieren,
  • mehrere Entwickler bereits auf Basis der Historie gearbeitet haben.

Cherry pick this commit

Cherry pick this commit übernimmt einen einzelnen Commit aus einem anderen Branch in den aktuellen Branch. Das ist nützlich, wenn du nicht den gesamten Branch mergen möchtest, sondern nur eine bestimmte Änderung brauchst.

Beispiel: In einem Feature-Branch wurden fünf Commits erstellt. Einer davon behebt zufällig einen wichtigen Fehler, der sofort in master benötigt wird. Mit Cherry Pick kannst du genau diesen einen Commit übernehmen, ohne die restlichen unfertigen Feature-Änderungen zu mergen.

Cherry Pick ist praktisch, sollte aber nicht wahllos eingesetzt werden. Wenn dieselben Änderungen später zusätzlich per Merge übernommen werden, kann die Historie unübersichtlich werden oder es können Konflikte entstehen. Deshalb sollte man bewusst dokumentieren, warum ein Commit einzeln übernommen wurde.

 

Create branch at this version vs. create tag at this version

In TortoiseGit sieht man häufig Funktionen wie Create branch at this version und Create tag at this version. Beide beziehen sich auf einen bestimmten Commit, haben aber unterschiedliche Bedeutungen.

Create branch at this version

Ein Branch ist ein beweglicher Entwicklungszweig. Wenn du einen Branch an einer bestimmten Version erstellst, kannst du von genau diesem Stand aus weiterarbeiten. Neue Commits bewegen den Branch weiter.

Das ist sinnvoll, wenn du:

  • auf Basis eines alten Stands eine Fehlerkorrektur entwickeln möchtest,
  • eine frühere Version weiterpflegen musst,
  • ein Experiment ab einem bestimmten Commit starten willst,
  • aus einem Release-Stand eine neue Entwicklungslinie machen möchtest.

Ein Branch ist also für aktive Entwicklung gedacht.

Create tag at this version

Ein Tag ist eine Markierung für einen bestimmten Commit. Tags werden häufig verwendet, um Versionen oder Releases zu kennzeichnen, zum Beispiel v1.0, v1.1 oder release-2026-06.

Ein Tag sollte im Normalfall nicht ständig weiterwandern. Er markiert einen festen Stand. Dadurch kannst du später leicht nachvollziehen, welcher Commit zu einer veröffentlichten Version gehörte.

Ein Tag ist sinnvoll, wenn du:

  • einen Release-Stand markieren möchtest,
  • eine stabile Version festhalten willst,
  • einen Kundenstand dokumentieren möchtest,
  • später exakt denselben Stand wiederherstellen möchtest.

Der wichtigste Unterschied

Branch bedeutet: Hier soll weiterentwickelt werden. Tag bedeutet: Dieser Stand soll dauerhaft markiert werden.

Wenn du also eine alte Version nur kennzeichnen möchtest, nimm einen Tag. Wenn du von dieser alten Version aus weiterarbeiten möchtest, nimm einen Branch.

 

Merge, Rebase, Reset, Revert und Cherry Pick richtig einordnen

Viele Git-Probleme entstehen, weil ähnliche Funktionen verwechselt werden. Besonders Merge, Rebase, Reset, Revert und Cherry Pick greifen alle in die Historie oder den Arbeitsstand ein, verfolgen aber unterschiedliche Ziele.

Funktion Zweck Typischer Einsatz
Merge Branch zusammenführen Feature-Branch in master übernehmen
Rebase Commits auf neue Basis setzen Historie linear halten oder lokalen Branch aktualisieren
Reset Branch-Zeiger zurücksetzen Lokale Historie korrigieren oder Stand zurückdrehen
Revert Änderung durch neuen Commit rückgängig machen Fehlerhaften veröffentlichten Commit sicher zurücknehmen
Cherry Pick Einzelnen Commit übernehmen Bugfix aus anderem Branch gezielt nach master holen

Als einfache Faustregel gilt: Für veröffentlichte oder gemeinsam genutzte Branches ist Revert häufig sicherer als Reset. Für normale Feature-Integration ist Merge verständlicher als Rebase. Cherry Pick ist sinnvoll für Einzelfälle, sollte aber nicht zum Standard-Ersatz für saubere Branch-Strukturen werden.

 

Typischer Git-Workflow für Entwickler

Ein sauberer Git-Workflow muss nicht kompliziert sein. Für viele kleine und mittlere Projekte reicht ein übersichtlicher Ablauf völlig aus.

1. Aktuellen Stand holen

git checkout master
git pull

Zuerst wechselst du auf master und holst den aktuellen Stand vom Server. Damit vermeidest du, auf veralteter Basis zu arbeiten.

2. Neuen Branch erstellen

git checkout -b feature-contact-form

Für eine neue Funktion wird ein eigener Branch erstellt. Der Name sollte verständlich sein, zum Beispiel feature-contact-form, bugfix-login-error oder refactor-navigation.

3. Änderungen entwickeln und committen

git status
git add .
git commit -m "Add contact form validation"

Während der Entwicklung werden sinnvolle Commits erstellt. Jeder Commit sollte eine nachvollziehbare Änderung enthalten.

4. Branch testen

Vor dem Merge sollten Tests durchgeführt werden. Bei Webprojekten kann das bedeuten: Seite im Browser prüfen, Formular testen, Responsivität kontrollieren, Fehlermeldungen ansehen und relevante Log-Dateien prüfen.

5. Zurück auf master und mergen

git checkout master
git pull
git merge feature-contact-form

Nach erfolgreichem Test wird der Branch in master übernommen. Danach kann der master Branch erneut getestet und anschließend gepusht werden.

6. Änderungen veröffentlichen

git push

Mit Push wird der neue master-Stand auf das entfernte Repository übertragen.

 

Konflikte verstehen und sicher lösen

Ein Merge-Konflikt entsteht, wenn Git Änderungen nicht automatisch zusammenführen kann. Das passiert zum Beispiel, wenn zwei Branches dieselbe Zeile in derselben Datei unterschiedlich verändert haben.

Ein Konflikt ist kein Fehler im dramatischen Sinn, sondern eine Entscheidung, die Git nicht alleine treffen kann. Du musst prüfen, welche Version korrekt ist oder ob beide Änderungen kombiniert werden müssen.

Typische Konfliktmarker in Dateien

<<<<<<< HEAD
Current version
=======
Incoming version
>>>>>>> feature-branch

Der Bereich oberhalb von ======= zeigt meist die aktuelle Version, der Bereich darunter die eingehende Änderung. Nach dem Bearbeiten müssen die Marker entfernt und die Datei erneut als gelöst markiert werden.

Tipps zur Konfliktlösung

  • Konflikte nicht hektisch lösen, sondern Datei für Datei prüfen.
  • Vor dem Merge sicherstellen, dass der eigene Arbeitsstand sauber ist.
  • Bei Unsicherheit den betroffenen Branch vorher sichern.
  • Nach einer Konfliktlösung immer testen.
  • Die finale Lösung mit einer verständlichen Commit-Nachricht speichern.

TortoiseGit bietet grafische Werkzeuge, um Konflikte übersichtlicher zu lösen. Trotzdem sollte man verstehen, was inhaltlich passiert. Das beste Tool hilft wenig, wenn man versehentlich die falsche Variante übernimmt.

 

Gute Commit-Nachrichten schreiben

Gute Commit-Nachrichten sind ein oft unterschätzter Produktivitätsfaktor. Sie helfen dir selbst, Kollegen und späteren Projektbetreuern zu verstehen, warum eine Änderung gemacht wurde.

Schlechte Commit-Nachrichten sind zum Beispiel:

  • Update
  • Fix
  • Changes
  • Test
  • Final

Besser sind konkrete Nachrichten:

  • Fix broken navigation link on contact page
  • Add validation for email input
  • Improve loading time of image gallery
  • Refactor database connection handling
  • Remove unused helper function

Eine gute Commit-Nachricht beschreibt kurz, was sich geändert hat. Bei komplexeren Änderungen kann zusätzlich im längeren Beschreibungstext stehen, warum die Änderung notwendig war.

 

Welche Dateien gehören nicht ins Git-Repository?

Nicht jede Datei eines Projekts sollte in Git gespeichert werden. Temporäre Dateien, lokale Konfigurationen, Zugangsdaten, Cache-Dateien oder automatisch erzeugte Build-Dateien gehören meist nicht in die Versionskontrolle.

Dafür gibt es die Datei .gitignore. Sie legt fest, welche Dateien Git ignorieren soll.

Beispiel für eine einfache .gitignore-Datei

*.log
*.tmp
/cache/
/node_modules/
/vendor/
.env
.DS_Store
Thumbs.db

Besonders wichtig: Zugangsdaten, API-Schlüssel, Passwörter und private Konfigurationsdateien sollten nicht ins Repository gelangen. Wurden sensible Daten versehentlich committed und gepusht, reicht ein einfaches Löschen in einem späteren Commit oft nicht aus, weil die Daten weiterhin in der Git-Historie vorhanden sein können.

Gerade bei Projekten mit KI-Schnittstellen, APIs oder Automatisierung ist ein bewusster Umgang mit Zugangsdaten wichtig. Passend dazu findest du auf Andinet weitere Grundlagen zu Künstlicher Intelligenz und modernen KI-Anwendungen sowie einen Überblick über nützliche KI-Tools.

 

Remote-Repositories: GitHub, GitLab, Bitbucket oder eigener Server

Ein lokales Git-Repository ist bereits nützlich. Noch stärker wird Git aber mit einem entfernten Repository. Dieses Remote-Repository kann auf GitHub, GitLab, Bitbucket, einem Firmenserver oder einem eigenen Git-Server liegen.

Das Remote-Repository dient als zentrale Ablage. Es ermöglicht Backups, Teamarbeit, Code Reviews, automatisierte Tests und Deployments. Typische Remote-Befehle sind:

git remote -v
git fetch
git pull
git push

Mit git remote -v siehst du, welche Remote-Adressen eingerichtet sind. git push überträgt deine lokalen Commits zum Remote. git pull holt Änderungen und integriert sie in deinen aktuellen Branch.

Bei Teamprojekten sollte man nicht einfach ungeprüft direkt auf master pushen. Häufig wird mit Pull Requests oder Merge Requests gearbeitet. Dabei werden Änderungen zunächst überprüft, kommentiert und erst danach in den Hauptbranch übernommen.

 

Release-Versionen mit Tags sauber markieren

Tags sind besonders nützlich, wenn du bestimmte Projektstände dauerhaft markieren möchtest. Ein typischer Einsatz sind Software-Releases, Website-Versionen, Kundenstände oder Meilensteine.

git tag v1.0.0
git push origin v1.0.0

Ein Tag wie v1.0.0 zeigt später exakt auf den Commit, der zu dieser Version gehörte. Dadurch kannst du jederzeit herausfinden, welcher Code veröffentlicht wurde.

Für professionelle Projekte ist eine klare Versionierung hilfreich. Häufig wird eine Form der semantischen Versionierung verwendet:

  • 1.0.0: erste stabile Hauptversion
  • 1.1.0: neue Funktion ohne Bruch bestehender Funktionen
  • 1.1.1: kleine Fehlerkorrektur
  • 2.0.0: größere Änderung, die nicht vollständig abwärtskompatibel ist

Tags helfen auch beim Deployment. Wenn ein Release fehlerhaft ist, lässt sich einfacher nachvollziehen, welcher Stand betroffen war und welche Änderungen seitdem hinzugekommen sind.

 

Git im Zusammenspiel mit Entwicklungsumgebungen und Tools

Git kann über die Kommandozeile, über TortoiseGit, über Entwicklungsumgebungen oder über Weboberflächen genutzt werden. Viele moderne Editoren und IDEs bieten integrierte Git-Funktionen. Trotzdem ist es sinnvoll, die Grundkonzepte unabhängig vom Tool zu verstehen.

Typische Arbeitsumgebungen sind:

  • TortoiseGit unter Windows
  • Visual Studio Code mit Git-Integration
  • Visual Studio, JetBrains IDEs oder Eclipse
  • Git Bash oder PowerShell
  • GitHub Desktop oder GitLab-Oberflächen
  • CI/CD-Systeme für automatische Tests und Deployments

Für Einsteiger kann TortoiseGit den Start erleichtern, weil viele Funktionen visuell dargestellt werden. Für fortgeschrittene Entwickler bleibt die Kommandozeile wichtig, weil sie präzise, schnell und gut automatisierbar ist.

Wenn du eigene Software nicht nur entwickeln, sondern später auch veröffentlichen oder vermarkten möchtest, kann der Andinet-Artikel eigene Software und Apps erfolgreich verkaufen ein passender nächster Schritt sein.

 

Häufige Git-Fehler und wie du sie vermeidest

Git ist sehr mächtig, aber genau deshalb können falsche Aktionen unangenehme Folgen haben. Viele Probleme lassen sich vermeiden, wenn man einige Grundregeln beachtet.

Fehler 1: Direkt auf master experimentieren

Wer große Umbauten direkt auf master macht, riskiert einen instabilen Hauptstand. Besser ist ein eigener Branch für Experimente, Refactorings oder neue Funktionen.

Fehler 2: Zu große Commits

Ein Commit sollte nicht mehrere unabhängige Themen vermischen. Wenn in einem Commit gleichzeitig Layout, Datenbank, API, Texte und Konfiguration geändert werden, ist später schwer zu erkennen, welche Änderung ein Problem verursacht hat.

Fehler 3: Sensible Daten committen

Passwörter, Tokens, private Schlüssel und Zugangsdaten gehören nicht ins Repository. Nutze lokale Konfigurationsdateien, Umgebungsvariablen und eine passende .gitignore-Datei.

Fehler 4: Hard Reset ohne Sicherung

Ein Hard Reset kann lokale Änderungen löschen. Vor riskanten Aktionen ist ein zusätzlicher Branch oder ein temporärer Commit oft die bessere Wahl.

Fehler 5: Rebase auf geteilten Branches

Rebase kann sinnvoll sein, sollte aber nicht leichtfertig auf Branches angewendet werden, die andere Entwickler bereits nutzen. Das Umschreiben der Historie kann sonst zu unnötigen Problemen führen.

Fehler 6: Konflikte blind auflösen

Konflikte sollten inhaltlich verstanden werden. Einfach eine Seite komplett zu übernehmen, kann wichtige Änderungen löschen.

 

Praktische Git-Checkliste für den Alltag

Diese kurze Checkliste hilft, typische Git-Aufgaben sauber und sicher zu erledigen:

  • Vor Arbeitsbeginn aktuellen Stand holen: git pull
  • Für neue Themen eigenen Branch erstellen
  • Regelmäßig mit git status prüfen, was geändert wurde
  • Vor jedem Commit Änderungen kontrollieren
  • Kleine, thematisch klare Commits erstellen
  • Commit-Nachrichten verständlich formulieren
  • Vor Merge nach master testen
  • Bei veröffentlichten Änderungen lieber Revert statt Reset verwenden
  • Release-Stände mit Tags markieren
  • Sensible Dateien über .gitignore ausschließen

Git Workflow mit master Branch Feature Branch Merge Commit Tag Release und sicherer Versionskontrolle

 

Wann sollte man welche Git-Funktion verwenden?

Gerade in TortoiseGit stehen viele Funktionen direkt im Kontextmenü bereit. Die folgende Einordnung hilft bei der Entscheidung:

Situation Empfohlene Funktion Warum?
Neue Funktion entwickeln Create branch Die Arbeit bleibt vom stabilen master getrennt.
Fertige Funktion übernehmen Merge to master Der Feature-Branch wird sauber in master integriert.
Alte Version markieren Create tag at this version Der Stand bleibt dauerhaft als Version erkennbar.
Ab alter Version weiterentwickeln Create branch at this version Du kannst von diesem Commit aus neue Änderungen erstellen.
Veröffentlichten Fehler rückgängig machen Revert changes by this commit Die Historie bleibt nachvollziehbar und teamfreundlich.
Lokalen Stand komplett zurücksetzen Reset master to this Sinnvoll bei lokalen Korrekturen, aber mit Vorsicht.
Einzelnen Bugfix übernehmen Cherry pick this commit Nur ein bestimmter Commit wird in den aktuellen Branch übernommen.
Lineare Historie erzeugen Rebase master onto this Commits werden auf eine neue Basis gesetzt.

Die wichtigste Regel lautet: Erst verstehen, dann klicken. Viele TortoiseGit-Funktionen sind sehr mächtig. Gerade Reset und Rebase sollten nicht aus Gewohnheit verwendet werden, sondern nur, wenn klar ist, was mit der Historie passiert.

 

Fazit: Git wird einfach, wenn man die Grundlogik versteht

Git wirkt am Anfang oft kompliziert, weil viele Begriffe und Funktionen gleichzeitig auftauchen. Im Kern geht es aber um eine einfache Idee: Änderungen werden nachvollziehbar gespeichert, Entwicklungsstände können verzweigt werden und wichtige Versionen lassen sich jederzeit wiederfinden.

Für den Entwickler-Alltag sind vor allem die Grundlagen entscheidend: Working Tree, Staging Area, Commit, Branch, Merge, Revert, Reset, Rebase, Cherry Pick und Tag. Wer diese Konzepte versteht, kann sowohl mit der Kommandozeile als auch mit TortoiseGit deutlich sicherer arbeiten.

Besonders beim Arbeiten mit dem master Branch lohnt sich Disziplin. Neue Funktionen gehören besser in eigene Branches, fertige Änderungen werden gezielt gemerged und veröffentlichte Fehler werden möglichst nachvollziehbar per Revert korrigiert. Tags markieren stabile Versionen, während Branches neue Entwicklung ermöglichen.

Die wichtigste Empfehlung: Nutze Git nicht nur als Speicherknopf, sondern als Entwicklungswerkzeug. Kleine Commits, klare Branches, gute Nachrichten und bewusst eingesetzte TortoiseGit-Funktionen machen Projekte langfristig übersichtlicher, sicherer und professioneller.

Weitere passende Inhalte findest du in den Andinet-Bereichen Programmierung und Softwareentwicklung, nützliche Downloads und Tools sowie KI für Entwickler und moderne Entwicklungsworkflows.

Kommentare 0

 

Neuen Kommentar schreiben: