Das Konzept¶
git ist ein schnelles, skalierbares, verteiltes Revisions- (Versions-) Kontrollsystem, das ursprünglich von Linus Torvalds entwickelt wurde (lesen Sie mehr über den git kernel]. git ermöglicht die Koordination der Arbeit zwischen Mitarbeitern über die Programmierung hinaus in beliebigen Dateien. Die Unterstützung von nichtlinearen Workflows, Geschwindigkeit und Datenintegrität macht git zu einem unverzichtbaren Werkzeug in vielen Branchen und in der Forschung. Bevor Sie mit dem Lesen dieses git Tutorials beginnen, werfen Sie einen Blick auf die schematische Funktionsweise von Repositories, die mit git gehostet werden.

Das Konzept von Git und Grundvokabular. Der REMOTE-Rahmen ist online (dh der Computer einer anderen Person) und der LOCAL-Rahmen ist das, was auf einem Personal Computer passiert, der mit dem Internet verbunden ist. Repositories können aus der Ferne neu erstellt oder gegabelt werden. Remote-Repositories können lokal geklont, lokal geändert und lokale Änderungen in ein Remote-Repository verschoben werden. Mitarbeiter möchten sicherstellen, dass regelmäßig Änderungen an einem entfernten Repository vorgenommen werden. Die Arbeit mit und an verschiedenen Zweigen wird mit der Anzahl der Entwickler immer wichtiger (siehe den Abschnitt über Zusammenarbeit und Zweige unten) und im Moment müssen wir uns nur daran erinnern, dass wir im Hauptzweig arbeiten (dh Upstream Origin / HEAD = Main).
Installieren git¶
Die mit diesem eBook bereitgestellten Materialien werden am besten mit git-fähigen Umgebungen heruntergeladen und aktualisiert (Vermeiden Sie das Herunterladen von Materialien als zip-Datei).
Obwohl Git ein integrales Merkmal der meisten Linux-Distributionen ist, müssen Debian-Benutzer es möglicherweise noch installieren. Zu diesem Zweck öffnen Terminal und tippen:
sudo apt install gitLaden Sie Git Bash] herunter und installieren Sie es zusammen mit einer IDE wie PyCharm’s Community Edition oder VS Code].
macOS-Benutzer können Homebrew] für die Installation von git verwenden, aber es gibt andere Optionen wie Xcode].
Um Homebrew für die Installation von git zu verwenden, beginnen Sie mit der Installation von Homebrew über das macOS Terminal]:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Die Installation von Homebrew kann eine Weile dauern. Stellen Sie nach der Installation sicher, dass Sie die erforderliche PATH-Variable exportieren (Zeilenweise kopieren):
echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> /Users/$USER/.zprofile
eval $(/opt/homebrew/bin/brew shellenv)Es kann möglich sein, dass die Pfade in den oben genannten Befehlen an die Verzeichnisse angepasst werden müssen, die der Homebrew-Installer am Ende seiner Installation anfordert.
Installieren Sie schließlich Git mit Homebrew:
brew install gitLetztendlich bietet Homebrew viele weitere Pakete, die für Entwickler von grundlegender Bedeutung sind, wie ruby oder React] (Gehen Sie zur vollständigen Paketliste](https://
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 da draußen, wie GitLab, plan.io, oder BitBucket].
Erstellen Sie ein Repository¶
Um ein git-Repository zu erstellen, stellen Sie sicher, dass Sie Zugriff auf einen git-Anbieter haben. Der beliebteste Weg, um Zugang zu einem git-fähigen Server zu erhalten, ist die Registrierung bei einem auf der langen Liste der beliebten git-Anbieter.
Clone (Download) ein Repository¶
GitHub bietet detaillierte Beschreibungen und Standardprozeduren für die Arbeit mit ihren Repositories (lesen Sie mehr]. Der folgende “Rezept” führt durch den erstmaligen Download von git Materialien:
Öffnen Sie Ihre favorisierte git-fähige Kommandozeile:
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)
Geschehen.
Pull (Update/Re-Download) ein lokales Repository¶
git (innerhalb von Git Bash, PyCharm oder Terminal) ist die einzige Option, um lokale Kopien eines Remote-Repositorys konsistent zu aktualisieren. Öffnen Sie dazu eine der oben genannten git-fähigen Befehlszeilen und führen Sie Folgendes aus:
Go to the local directory of the repository with the
cdcommand (e.g.,materials):
cd "D:/Python/materials/"(or wherevermaterialswas cloned).git status- shows the modifications made.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.
Geschehen.
Aktualisieren eines Remote-Repositorys (Push Local Changes)¶
Nachdem Sie Dateien in einem Repository lokal bearbeitet haben, add - commit - push (in dieser Reihenfolge) Ihre Bearbeitungen in die Remotekopie des Repository mit Versionskontrolle. Um lokale Änderungen an einem Remote-Repository hinzuzufügen * - * zu übertragen * - * zu drücken *, stellen Sie sicher, dass Sie der Eigentümer des Remote-Repositorys oder ein Mitwirkender sind. Öffnen Sie dann ein git-fähiges Terminal und geben Sie ein:
git status- this shows the modifications made.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.Commit the changes with
git commit -m "Leave a message"- leave a significant and precise short message (e.g.,"fix typos in flow calculator").git pull --rebase- Wenn lokal bearbeitete Dateien seit dem letzten Zug aus der Ferne geändert wurden, hebt git problematische (widersprüchliche) Abschnitte mit<<<<<<<,=======und>>>>>>>markern hervor. Manuelles Öffnen der betroffenen Dateien, lösen Sie die Konflikte, löschen Sie die ungültigen Konfliktmarker und führen Sie danngit add FILENAMEundgit rebase --continueaus.git push
Wenn ein Fehler auftritt, lesen Sie sorgfältig, warum der Fehler aufgetreten ist, und befolgen Sie die Anweisungen zur Fehlerbehebung (z. B. zum Einrichten Ihrer Benutzerkonfiguration mit git config --global user.email “email@example.com”]. Sie können Warnmeldungen bezüglich Zeilenendformaten (WARNUNG ... LF-Endungen ...) für die meisten in diesem eBook vorgestellten Anwendungen ignorieren.
Zusammenarbeit & 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.
Erstellen Sie einen Branch¶
Um einen neuen Branch zu erstellen und zu diesem zu wechseln, öffnen Sie ein git-fähiges Terminal im lokalen Repository und geben Sie Folgendes ein:
git switch main- stellen Sie sicher, dass Sie vommain-Zweig aus starten (ältere git-Versionen erforderngit checkout main).git pull- Aktualisieren Sie den lokalenmainBranch, um zu vermeiden, dass ein veralteter Zustand abgezweigt wird.git switch -c fix-hydraulics-chapter- erstellen und direkt zu einem neuen Branch wechseln (hierfix-hydraulics-chapter; ältere git Versionen erforderngit checkout -b fix-hydraulics-chapter). Verwenden Sie kurze, beschreibende Zweignamen wiefix-typos-git-chapteroderfeature-sediment-transport.
git branch lists all local branches and marks the currently active branch with a *. Switch between existing branches with git switch BRANCH-NAME.
Ändern (arbeiten an) einem Branch¶
Die Arbeit an einem Branch ist genau derselbe add - commit - push Workflow wie im Aktualisieren eines Remote-Repositorys (Push Local Changes)-Abschnitt beschrieben, mit einem Unterschied: Der erste Push muss dem entfernten Repository den neuen Branch mitteilen. Somit:
Bearbeiten Sie Dateien, dann
git statusundgit add .(odergit add filename.py).git commit -m "Leave a message"- Begehen Sie kleine, kohärente Arbeitseinheiten anstelle eines riesigen Begehens am Ende.git push -u origin fix-hydraulics-chapter- das-u(Upstream)-Flag verbindet den lokalen Zweig mit dem entfernten Zweig, so dass alle späteren Updates nur ein einfachesgit pusherfordern.
Um einen langlebigen Branch mit den laufenden Entwicklungen in main auf dem Laufenden zu halten, geben Sie regelmäßig ein (mit aktivem Feature Branch):
git fetch origin
git merge origin/mainResolve possible conflicts as described in the Pull (Update/Re-Download) ein lokales Repository section (here, conclude with git commit rather than git rebase --continue).
Kommentar und Review (Pull Requests)¶
Die direkte Zusammenführung einer eigenen Niederlassung ohne Review funktioniert für Solo-Projekte, aber in einem Team besteht Best Practice darin, eine *Pull-Anfrage zu öffnen (genannt * Merge Request auf GitLab). Eine Pull Request ist ein Vorschlag, einen Branch in einen anderen zu verschmelzen und stellt den zentralen Ort für den Kommentar zum Code dar:
Drücken Sie den Branch zum Remote-Repository (siehe oben).
Auf GitHub schlägt die Repository-Seite Compare & Pull Request für kürzlich geschobene Branchs vor. Alternativ gehen Sie auf die Registerkarte Pull Requests und klicken Sie auf New Pull Request, dann wählen Sie
mainals base und den Feature Branch (z.B.fix-hydraulics-chapter) als vergleichen.Geben Sie der Pull-Anfrage einen genauen Titel und beschreiben Sie **was ** geändert wurde und **warum **. Fordern Sie eine Bewertung von einem oder mehreren Mitarbeitern an (rechtes Menü auf GitHub).
Rezensenten können die Pull-Anfrage als Ganzes (Konversation-Tab) oder einzelne Codezeilen kommentieren (Akten geändert-Tab, bewegen sich über eine Zeile und klicken auf das
+-Symbol). Zeilenkommentare können auch zu einer formellen Überprüfung mit den Urteilen *Kommentar *, *Genehmigen * oder *Anforderungsänderungen * zusammengefasst werden.Um Review-Kommentare zu bearbeiten, müssen Sie einfach neue Änderungen an demselben Branch vornehmen und verschieben. Die Pull-Anfrage wird automatisch aktualisiert, und gelöste Diskussionen können als solche mit dem Resolve conversation-Button markiert werden.
Zusammenführung eines Entwicklungszweigs in Main¶
Sobald die Pull-Anfrage genehmigt wurde (und automatisierte Überprüfungen bestehen, falls konfiguriert), wenden Sie die neuen Entwicklungen auf main an, indem Sie auf die Schaltfläche Merge Pull Request auf GitHub klicken. Darüber hinaus bietet GitHub Squash und Merge an (kombiniert alle Branch-Commits zu einem einzigen Commit, der die Historie von main ordentlich hält) und Rebase und Merge. Nach dem Zusammenführen löschen Sie den Branch aus der Ferne (GitHub schlägt eine Abzweig-Taste vor) und lokal:
git switch main
git pull
git branch -d fix-hydraulics-chapterOhne eine git Provider-Schnittstelle (z.B. für ein rein lokales Repository) kann ein Branch auch manuell zusammengeführt werden:
git switch main- Wechsel zum Zielzweig.git pull- stellen Sie sicher, dass die lokalemain-Niederlassung auf dem neuesten Stand ist (überspringen Sie für rein lokale Repositorys).git merge fix-hydraulics-chapter- Fügen Sie den Entwicklungszweig zumainzusammen. Lösen Sie mögliche Konflikte (siehe Pull (Update/Re-Download) ein lokales Repository), danngit adddie gelösten Dateien undgit commit.git push- veröffentlichen Sie den aktualisiertenmainZweig.git branch -d fix-hydraulics-chapter- delete the merged branch (git refuses to-d-delete branches with unmerged changes, which is a useful safety net).
Geschehen.