Das Konzept¶
git ist ein schnelles, skalierbares, verteiltes Revisionssystem*, das ursprünglich von Linus Torvalds entwickelt wurde (mehr zum git kernel). git ermöglicht die Koordination der Arbeit bei Mitarbeitern über die Programmierung hinaus, in jeder Menge von Dateien. Die Unterstützung nichtlinearer Workflows, Geschwindigkeit und Datenintegrität macht git zu einem unverzichtbaren Werkzeug in vielen Branchen und Forschungen. Bevor Sie beginnen, dieses git Tutorial zu lesen, werfen Sie einen Blick auf die schematisierte Funktion von Repositories, die mit git gehostet werden.

Das Konzept von Git und Grundvokabular. Der REMOTE-Rahmen ist online (d.h. jemand anderen Computer) und der LOCAL-Rahmen ist das, was auf einem persönlichen Computer passiert, der mit dem Internet verbunden ist. Repositories können neu erstellt oder remote aufgerufen werden. Remote-Repositories können lokal kloniert, lokal verändert und lokale Änderungen können auf ein Remote-Repository verschoben werden. Mitarbeiter wollen sicherstellen, dass regelmäßig Änderungen eines Remote-Repositorys gezogen werden. Die Zusammenarbeit mit und auf verschiedenen Zweigen wird mit der Anzahl der Entwickler immer wichtiger (siehe Abschnitt über Zusammenarbeit und Zweige unten) und im Moment müssen wir uns nur daran erinnern, dass wir in der Hauptbranche (d.h. stromaufwärts / HEAD = main) arbeiten.
Git installieren¶
Die mit diesem eBook bereitgestellten Materialien werden am besten heruntergeladen und mit git-fähigen Umgebungen aktualisiert (vermeiden Sie das Herunterladen von Materialien als zip-Datei).
Obwohl git eine integrale Funktion der meisten Linux-Distributionen ist, müssen Debian-Benutzer sie möglicherweise noch installieren. Dazu öffnen Sie Terminal und tippen Sie auf:
sudo apt install gitDownloaden und installieren Sie Git Bash und verwenden Sie diese zusammen mit einer IDE wie PyCharms Community Edition oder VS Code.
macOS-Nutzer können Homebrew für die Installation von git, aber es gibt andere Optionen, wie Xcode.
Um Homebrew für die Installation von git zu verwenden, starten Sie mit der Installation von Homebrew über die macOS Terminal:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Die Installation von Homebrew kann eine Weile dauern. Nach der Installation stellen Sie sicher, dass Sie die benötigte PATH-Variable (Copy line-by-line) exportieren:
echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/$USER/.zprofile
eval $(/opt/homebrew/bin/brew shellenv)Möglicherweise müssen die Pfade in den obigen Befehlen an die Verzeichnisse angepasst werden, die der Homebrew-Installer am Ende seiner Installation anfordert.
Schließlich installieren Sie git mit Homebrew:
brew install gitLetztlich bietet Homebrew viele weitere Pakete, die im Wesentlichen für Entwickler nützlich sind, wie ruby oder React(go to the full package list].
Read more installation instructions and about options for git on macOS at https://
Die Repositories für diesen Kurs werden hauptsächlich auf GitHub gehostet. Es gibt viele andere git-Dienstleister, wie GitLab, plan.io, oder BitBucket.
Erstellen eines Repositorys¶
Um ein git-Repository zu erstellen, stellen Sie sicher, dass Sie Zugriff auf einen git-Anbieter haben. Die beliebteste Möglichkeit, Zugriff auf einen git-fähigen Server zu erhalten, ist, sich mit einem auf der langen Liste der beliebten git-Anbieter zu registrieren.
Klonen (Download) ein Repository¶
GitHub bietet ausführliche Beschreibungen und Standardverfahren, um mit ihren Repositories zu arbeiten (mehr]). Das folgende “Rezept” führt durch den erstmaligen Download von git Materialien:
Öffnen Sie Ihren Favoriten git-fähige Befehlszeile:
Windows Optionen: PowerShell, Git Bash oder Command Prompt
Linux: Terminal
Clone the course repository (change materials according to the course attended):
git clone https://github.com/hydro-informatics/materials(or whatever repository you want to clone)
Fertig.
Pull (Update/Re-Download) a Local Repository¶
git (innerhalb Git Bash, PyCharm oder Terminal) ist die einzige Möglichkeit, lokale Kopien eines Remote-Repositorys konsequent zu aktualisieren. Dazu öffnen Sie eine der oben genannten git-fähigen Befehlszeilen und tun Sie die folgenden:
Go to the local directory of the repository with the
cdcommand (e.g.,materials):
cd "D:/Python/materials/"(or wherevermaterialswas cloned).git status- zeigt die Änderungen.Merge conflicts may occur when changes were made in the local copy. To keep the local history linear, type:
git pull --rebase- if locally edited files were modified remotely since the last pull, git will highlight problematic (conflicting) sections with<<<<<<<,=======, and>>>>>>>markers. Manually open the concerned files, resolve the conflicts, and delete the invalid conflict markers. Then mark the files as resolved withgit add FILENAMEand finalize withgit rebase --continue.
Fertig.
Aktualisieren eines Remote Repository (Push Local Changes)¶
Nach der Bearbeitung von Dateien in einem Repository lokal, add - commit - push (in dieser Reihenfolge) Ihre Bearbeitungen auf die entfernte Kopie des Repository mit Versionskontrolle. Um add - commit - push lokale Änderungen in einem Remote-Repository, stellen Sie sicher, dass der Remote-Repository-Besitzer oder ein Beitragszahler. Dann öffnen Sie ein git-fähiges Terminal und geben Sie:
git status- dies zeigt die vorgenommenen Änderungen.If the status only lists consciously made changes, type
git add .
Alternatively, if only single files were changed, usegit add filename.pyinstead. Best practice: exclude files that should never be tracked (e.g., temporary or large binary files) with a local .gitignore file.Überlassen Sie die Änderungen mit
git commit -m "Leave a message"- hinterlassen Sie eine signifikante und präzise Kurznachricht (z.B."fix typos in flow calculator").git pull --rebase- Wenn lokal bearbeitete Dateien seit dem letzten Zug remote geändert wurden, wird git problematische (conflicting) Abschnitte mit<<<<<<<,=======und>>>>>>>Markern hervorheben. Öffnen Sie die betroffenen Dateien manuell, lösen Sie die Konflikte, löschen Sie die ungültigen Konfliktmarker, führen Sie danngit add FILENAMEundgit rebase --continue.git push
Wenn ein Fehler auftritt, lesen Sie sorgfältig, warum der Fehler aufgetreten ist und folgen Sie den Anweisungen zur Fehlerbehebung (z.B. zur Einrichtung Ihrer Benutzerkonfiguration mit git config --global user.email “email@example.com”). Sie können Warnmeldungen über Zeilenendformate (WARNING ... LF endet ...) für die meisten Anwendungen in diesem eBook ignorieren.
Zusammenarbeit und Branchen¶
As soon as more than one person works on a repository (or one person works on more than one feature), committing everything directly to the main branch becomes error-prone. Best practice is to keep main always in a working state and to develop new features, fixes, or experiments on dedicated branches. A branch is an independent line of development that starts as a copy of another branch (typically main) and can later be merged back.
Eine Zweigstelle erstellen¶
Um einen neuen Zweig zu erstellen und darauf zu wechseln, öffnen Sie ein git-fähiges Terminal im lokalen Repository und geben Sie:
git switch main- Stellen Sie sicher, dass Sie von dermainFiliale starten (ältere git Versionen benötigengit checkout main).git pull- aktualisieren Sie die lokalemain-Niederlassung, um eine Verzweigung eines veralteten Staates zu vermeiden.git switch -c fix-hydraulics-chapter- erstellen und direkt an einen neuen Zweig wechseln (hier heißtfix-hydraulics-chapter; ältere git-Versionen benötigengit checkout -b fix-hydraulics-chapter). Verwenden Sie kurze, beschreibende Zweignamen wiefix-typos-git-chapteroderfeature-sediment-transport.
git branch listet alle lokalen Zweige auf und markiert den derzeit aktiven Zweig mit einer *. Wechseln Sie zwischen bestehenden Zweigen mit git switch BRANCH-NAME.
Ändern (Work on) a Branch¶
Die Arbeit an einer Branche ist genau der gleiche add - commit - push Workflow wie im Abschnitt Aktualisieren eines Remote Repository (Push Local Changes) beschrieben, mit einem Unterschied: Der erste Push muss dem entfernten Repository über die neue Branche erzählen. So:
Dateien bearbeiten, dann
git statusundgit add .(odergit add filename.py).git commit -m "Leave a message"- begehen kleine, kohärente Arbeitseinheiten statt eines riesigen Auftrags am Ende.git push -u origin fix-hydraulics-chapter- Die-u(upstream)-Flagge verbindet die lokale Filiale mit der abgelegenen Filiale, sodass alle späteren Updates nur eine einfachegit pushbenötigen.
Um einen langjährigen Zweig mit fortschreitenden Entwicklungen in main auf dem Laufenden zu halten, geben Sie regelmäßig (mit dem Funktionszweig aktiv):
git fetch origin
git merge origin/mainLösung möglicher Konflikte, wie im Abschnitt Pull (Update/Re-Download) a Local Repository beschrieben (hier mit git commit anstatt git rebase --continue).
Kommentar und Bewertung (Pull Requests)¶
Direkte Verschmelzung einer eigenen Filiale ohne Überprüfungsarbeiten für Soloprojekte, aber in einem Team ist die beste Praxis, eine pull-Anfrage zu öffnen (Merge-Anfrage auf GitLab). Ein Pull-Antrag ist ein Vorschlag, einen Zweig in einen anderen zu überführen und stellt den zentralen Platz für die Anmerkung zum Code dar:
Drücken Sie den Zweig zum entfernten Repository (siehe oben).
Auf GitHub schlägt die Repository-Seite Compare & Pull-Anfrage für kürzlich geschobene Filialen vor. Alternativ gehen Sie auf die Registerkarte Pull-Anfragen und klicken Sie auf Neue Ziehanforderung, dann wählen Sie
mainals base und den Funktionsbereich (z.B.fix-hydraulics-chapter) als compare.Geben Sie der Pull-Anfrage einen genauen Titel und beschreiben Sie what wurde geändert und why. Fordern Sie eine Bewertung von einem oder mehreren Mitarbeitern an (rechtes Menü auf GitHub).
Die Rezensatoren können die Pull-Anfrage als Ganzes (Conversation Tab) oder auf einzelnen Codezeilen (Files geändert Tab, Hover über eine Zeile und klicken Sie auf das
+Symbol). Linienkommentare können auch mit den Urteilen Comment, Approve oder Request-Änderungen in eine formale Überprüfung gebündelt werden.Um Kommentare zu überprüfen, begehen Sie einfach und drücken Sie neue Änderungen in der gleichen Branche. Die Pull-Anforderung aktualisiert sich automatisch, und die aufgelösten Diskussionen können als solche mit der *Resolve Gespräch Taste markiert werden.
Verschmelzung einer Entwicklungsabteilung ins Haupt¶
Sobald die Pull-Anfrage genehmigt ist (und automatisierte Checks passieren, falls konfiguriert), wenden Sie die neuen Entwicklungen an main an, indem Sie auf die Merge Pull-Anfrage Taste auf GitHub klicken. Darüber hinaus bietet GitHub Squash and merge (kombiniert alle Zweige verpflichtet sich zu einem einzigen Commit, das die Geschichte von main tidy) und Rebase and merge hält. Nach dem Zusammenfügen, löschen Sie den Zweig remote (GitHub schlägt eine Delete branch Taste) und lokal:
git switch main
git pull
git branch -d fix-hydraulics-chapterOhne eine git-Anbieter-Schnittstelle (z.B. für ein rein lokales Repository) kann ein Zweig auch manuell zusammengeführt werden:
git switch main- Wechsel in die Zielbranche.git pull- stellen Sie sicher, dass die lokalemain-Niederlassung aktuell ist (Skip für rein lokale Repositories).git merge fix-hydraulics-chapter- Zusammenführen der Entwicklungszweig inmain. Lösung möglicher Konflikte (siehe Abschnitt Pull (Update/Re-Download) a Local Repository), danngit adddie aufgelösten Dateien undgit commit.git push- veröffentlichen Sie die aktualisiertemaingit branch -d fix-hydraulics-chapter- Löschen Sie den vereinigten Zweig (git weigert sich an-d-delete Filialen mit unerreichten Änderungen, was ein nützliches Sicherheitsnetz ist).
Fertig.