15 - Quellcode in VSCodium verwalten mit GIT

GITexternal link ist eine Software zur Verfolgung von Änderungen an Textdateien - also prinzipiell nicht nur für Software-Entwickler interessant, sondern generell für Autoren. In der Softwareentwicklung ist das Tool nicht mehr wegzudenken, vor allem wenn mit vielen Leuten an den Dokumenten gearbeitet wird. Man kann es aber auch als Einzeluser sinnvoll einsetzen.

Man kann GIT komplett übr das Terminal bedienen, es macht aber Sinn ein Programm mit einer grafischen Benutzeroblerfläche zu verwenden. Wer VS-Code benutzt freut ich über eine ganze Reihe von Pluginsexternal link die das Leben vereinfachen. Am nützlichsten finde ich …

Wer VS Code nicht verwendet, könnte sich mal die App Forkexternal link anschauen. Die nutze ich auch sehr gerne.

GIT auf OS-X installieren

Wie funktioniert GIT

Das geht erstmal rein lokal auf dem eigenen Rechner:

# create git
git init
# remove git
rm -rf .git*

Es gibt bei GIT folgende Zustände:

  • untracked (es existiert kein gespeichertes Gegenstück). Solche neuen Dateien können hinzugefügt oder per „gitignore“ ignoriert werden.
  • CHANGES - Zeigt geänderte und gelöschte (modified) Dateien an.
  • Staging Area - Klick auf das Plus-Icon, das auf der rechten Seite in der Git-Ansicht eingeblendet wird, wenn mit der Maus über einen Dateieintrag gefahren wird.

Nach Eingabe einer Nachricht, die den Commit beschreibt, kann dieser mit einem Klick auf den oberen rechten Hacken () erstellt werden. Dabei werden alle Dateien, die sich in der Staging Area befinden, zusammengefasst und von Git archiviert. Dateien die sich nicht verändert haben (committed), werden von VSCodium nicht in der Git-Ansicht angezeigt.

Arbeiten mit Branches

Die Geschichte des Repositorys - die Reihe der Commits - ist nicht nur linear, sondern kann sich auch verzweigen. So kann man zB neue Features in einem Softwareprojekt unabhängig von den Hauptaufgaben entwickelt und erst zu einem späteren Zeitpunkt wieder in den Hauptentwicklungszweig zurückgeführen.

  • master - Haupt-Branch, sollte den aktuellen Entwicklungsstand des Projektes enthalten.

  • branch anlegen: Git: Branch

  • zwischen Branches umschalten: Git: Checkout ?

  • Nach dem man einen weiteren Branch angelegt, und auf diesen umgeschaltet hat, werden Commits dort abgelegt. Der master-Branch bleibt unberührt .

  • merge - Änderungen im Branch wieder in den „master“ übernehmen.

  • https://git-scm.com/book/de/v1/Git-Branching-Was-ist-ein-Branch%3Fexternal link

Arbeiten mit Remotes

Tag and Release

git tag <tagname>
git tag -a <tagname> -m '<message>'

git push origin --tags
# push a single tag
git push origin <tag>

# Example:
git tag -a v1.1.0 -m 'Dependency updates'
git push origin v1.1.0

Dadurch wird ein lokales Tag mit dem aktuellen Status des Zweigs, in dem du dich befindest, erstellt. Ein Tag ohne Anmerkungen ist nur ein benannter Zeiger auf einen commit.

Sematic Versioning

https://semver.orgexternal link

Versionierungsschema, bei dem die Versionsnummer einige grundlegende Informationen enthält, anhand derer ein Benutzer beurteilen kann, wie einfach oder schwierig ein Upgrade auf eine neue Version ist.

Semantische Versionsnummern werden nach dem Muster Major.Minor.Patch erstellt, wobei jede Nummer eine nichtnegative ganze Zahl ist (und mehrere Ziffern haben kann). Die Inkrementierung jeder der Nummern erfolgt nach drei Regeln:

  • Major wird immer dann inkrementiert, wenn Sie inkompatible Änderungen vornehmen.
  • Minor wird inkrementiert, wenn Sie funktionale Änderungen vornehmen, die abwärtskompatibel sind.
  • Patch wird hochgezählt, wenn eine Version nur abwärtskompatible Korrekturen enthält.

Wenn eine dieser Nummern erhöht wird, werden alle Nummern niedrigerer Ordnung auf Null zurückgesetzt. Vorabversionen oder Entwicklungs-Snapshots können auch ein Versionssuffix haben, das durch einen Bindestrich - abgegrenzt wird. Zum Beispiel:

  • X.Y.Z-dev: Ein Entwicklungs-Snapshot bis zur Version X.Y.Z
  • X.Y.Z-alpha: Eine “Alpha”-Version, die zu Version X.Y.Z führt und für interne Tests bestimmt ist.
  • X.Y.Z-beta2: Die zweite “Beta”-Version, die auf die Version X.Y.Z hinführt und für externe Tests vorgesehen ist.
  • X.Y.Z-rc1: Der erste “Release Candidate” der kommenden Version X.Y.Z. Wenn keine signifikanten Fehler gefunden werden, könnte dieser Commit auch das vX.Y.Z-Tag erhalten, andernfalls könnte ein -rc2 Release folgen.

Ein Sonderfall ist auch die Major-Version Null (0.Y.Z), da sie für die Erstentwicklung verwendet wird. Alles kann sich zu jeder Zeit ändern. Die öffentliche API sollte nicht als stabil angesehen werden.

Git stash

git stash speichert deine nicht committeten Änderungen (egal, ob sie sich in der Staging-Umgebung befinden oder nicht) zur späteren Verwendung und setzt dann deine Arbeitskopie zurück. Zum Beispiel:

git status
git stash
git status

Dein Stash ist lokal und wird bei einem Push nicht an den Server übermittelt. Nun kannst du…

  • Änderungen vornehmen
  • neue Commits erstellen
  • Branches wechseln
  • und alle anderen Git-Funktionen nutzen

Wenn du bereit bist, wendest du deinen Stash wieder an.

Wenn du deinen Stash poppst, werden die Änderungen aus deinem Stash entfernt und auf deine Arbeitskopie angewendet:

git status
git stash pop

Du kannst aber auch die Änderungen auf deine Arbeitskopie anwenden und sie weiterhin in deinem Stash aufbewahren:

git stash apply

Das ist nützlich, wenn du dieselben gestashten Änderungen auf mehrere Branches anwenden willst.

In den Standardeinstellungen bewahrt Git keine Änderungen an nicht verfolgten oder ignorierten Dateien im Stash auf.

Aufnehmen von unverfolgten oder ignorierten Dateien mit “git stash”

In den Standardeinstellungen wird beim Ausführen von git stash Folgendes in den Stash verschoben:

  • Änderungen, die deinem Index hinzugefügt wurden (in der Staging-Umgebung)
  • Änderungen an Dateien, die aktuell von Git verfolgt werden (noch nicht in der Staging-Umgebung) Nicht in den Stash verschoben wird Folgendes:
  • Neue Dateien in deiner Arbeitskopie, die sich noch nicht in der Staging-Umgebung befinden
  • Dateien, die ignoriert werden

Wenn wir also dem obigen Beispiel eine dritte Datei hinzufügen, diese aber nicht in die Staging-Umgebung verschieben (d. h. wir führen git add nicht aus), wird git stash die Datei nicht dem Stash hinzufügen.

Verwalten mehrerer Stashes mit “git stash”

Du musst dich nicht auf einen einzigen Stash beschränken. Du kannst git stash mehrmals ausführen, um mehrere Stashes zu erstellen und diese anschließend mit git stash list ansehen. Standardmäßig werden Stashes an der Spitze des Branch und Commits, von dem du den Stash erstellt hast, einfach als “WIP”, also Work in Progress, identifiziert. Nach einer Weile kann es schwierig werden, sich daran zu erinnern, was in dem jeweiligen Stash enthalten ist:

git stash list

Zur Bereitstellung von mehr Kontextinformationen ist es sinnvoll, deine Stashes mit einer Beschreibung zu versehen:

git stash save "Nachricht"

Standardmäßig wird mit git stash pop der zuletzt erstellte Stash erneut angewendet: stash@{0} Du kannst aber wählen, welcher Stash erneut angewendet werden soll, indem du dessen Kennung als letztes Argument anfügst, zB.:

git stash pop stash@{2}

Ansehen von Stash-Diffs

TODO

Partielle Stashes

Erstellen eines Branch von deinem Stash

Bereinigen des Stash

Funktionsweise von git stash

GitHub in VS-Code verwenden

  • VSCodium Extensions für GIT:

    • Git Blame - Git Blame-Informationen in der Statusleiste für die aktuell ausgewählte Zeile sehen.
    • Git Extensions for VS Code -  Stellt einen Befehl zum Durchsuchen des aktuellen Projekts mit GitExtensions vom Explorer aus zur Verfügung.
    • Git History - View git-log, file history. Compare branches or commits
    • Github build status - Zeigt den aktuellen Build-Status an, der von Github geholt wurde
    • GitHub Pull Requests and Issuesexternal link - Überprüfen und Verwalten von GitHub pull requests und issues.
    • gitignore - Hilft bei der Arbeit mit .gitignore-Dateien.
    • GitLensexternal link - Hilft bei der Visualisierung der Code-Autorenschaft auf einen Blick durch Git Blame-Annotationen und Code-Linse, nahtlose Navigation und Erkundung von Git-Repositories, Gewinnung wertvoller Einblicke durch leistungsstarke Vergleichsbefehle,…
    • gitlink - Den Online-Link der aktuellen Datei im Browser aufzurufen und den Link in die Zwischenablage kopieren.

  • Installiere die GitHub Pull Requests and Issues Extension
  • Anleitung: https://code.visualstudio.com/notes/editor/githubexternal link
  • Anmelden auf githubexternal link beim eigenem Accountexternal link
  • Menü Rechts oben in der Ecke -> Settings
  • Links im Menü -> Developer Settings
  • Links im Menü -> Personal Access Token
  • Button: Generate New Token
  • Als Note habe ich “vscodium” eingetragen.
  • Das Token kopieren, und irgendwo ablegen - Vorsicht: Es ist danach nie mehr sichtbar!
  • Das Token ist jetzt als “vscodium” gelistet, und man kann es bearbeiten, und löschen.
  • In VSCodium: Unten in der Statuszeile Signing in to github.com... anklicken.
  • Den Code oben in die Komandozeile eintragen und return drücken.
  • VSCodium ist jetzt erfolgreich mit dem GitHub Acount verbunden.
  • Jetzt muss ich nur noch mein lokales Projekt - am besten den master Branch - hochladen um ein remote zu erzeugen….

GIT-Clients