15 - Quellcode in VSCodium verwalten mit GIT
GIT 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 Plugins die das Leben vereinfachen. Am nützlichsten finde ich …
Wer VS Code nicht verwendet, könnte sich mal die App Fork anschauen. Die nutze ich auch sehr gerne.
GIT auf OS-X installieren
- Über Xcode wird ein GIT mit installiert - so hab ich das gemacht.
- Über
homebrew
:
brew install git - Über den Binary GIT OSX Installer von Tim Harper
- Die Version im Terminal prüfen mit:
git --version
Wie funktioniert GIT
Das geht erstmal rein lokal auf dem eigenen Rechner:
git init- Im Wurzelverzeichnis des Repositorys wird ein neuer versteckter Ordner namens.giterstellt. Git verwendet diesen, um Repositorys zu identifizieren und dort Daten abzulegen.Im Root Verzeichnis des Projekts gibt es die
.gitignoreDatei: Enthält Dateien und Ordner die von git ignoriert werden sollen. Diese werden im Explorer grau dargestellt. Ein git kann man auch wieder entfernen, in dem man das Verzeichnis.gitlöscht.
# 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.branchanlegen: Git: Branchzwischen 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%3F
Arbeiten mit Remotes
- Für das Arbeiten in Teams kann man Branches zusätzlich über mehrere Rechner synchronisieren.
- Ein so genanntes Remote ist ein zentrales, online gehostetes Repository, für jederzeitigen Zugriff von überall aus:
- Remote zum git repository hinzufügen: „git remote add
“ - Danach stehen weitere Funktionen im Git-Menü zur Verfügung.
- Oft haben lokale Branches ein Gegenstück auf Remote-Seite.
- Commits in den Branches werden bei Eingabe entsprechender Befehlen synchronisiert.
- git-scm.com/book/de/v1/Git-Grundlagen-Mit-externen-Repositorys-arbeiten
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.0Dadurch 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.
- Ein Tag ist was anderes als ein Release
- https://www.toolsqa.com/git/github-releases/
- Man kann aus einem Tag ein Release machen
Sematic Versioning
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 statusDein 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 popDu kannst aber auch die Änderungen auf deine Arbeitskopie anwenden und sie weiterhin in deinem Stash aufbewahren:
git stash applyDas 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 listZur 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 Issues - Überprüfen und Verwalten von GitHub pull requests und issues.
- gitignore - Hilft bei der Arbeit mit .gitignore-Dateien.
- GitLens - 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 IssuesExtension - Anleitung: https://code.visualstudio.com/notes/editor/github
- Anmelden auf github beim eigenem Account
- 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….