Skip to main content

Einführung

Die Implementierung von CODESYS Git ist an das Arbeiten in Git und an die Begrifflichkeiten von Git angelehnt. Nach der Installation erhalten Sie in der Menüleiste von CODESYS das Menü Git mit den Befehlen zum Initialisieren eines Git-Projekts und zum Arbeiten mit den angebundenen Git-Repositorys.

Sehen Sie im Folgenden einige Begriffsverwendungen in der CODESYS Git-Hilfe und in der CODESYS Git-Benutzeroberfläche. Entsprechende Standard-Git-Befehle sind mit angegeben.

Grundkenntnisse im Arbeiten mit Git werden vorausgesetzt. Dokumentation dazu finden Sie beispielsweise hier: Git-Book, Atlassian Git Bucket

Git-Repository, Git-Projektablage („Arbeitsverzeichnis“, „Arbeitsbaum“, „Working Tree“, „Git Project Storage“)

Für das rein lokale Repository für ein CODESYS Git-Projekt verwenden wir hier abgekürzt den Begriff „Git-Repository“.

Das Git-Repository liegt im Dateisystem in der „Git-Projektablage“ im Unterverzeichnis .git. Im Unterverzeichnis project liegen die unter Git-Verwaltung stehenden Objekte des Projekts (<objecttype>_<ID>). Die Objektdateien liegen in einer Verzeichnishierarchie, die der Hierarchie der Objekte im CODESYS-Projekt entspricht.

Die Git-Projektablage enthält außerdem die Git-Verwaltungsdateien .gitattribute, .gitignore und .apsession. .apsession dient zur Steuerung der Zugriffe von CODESYS-Instanzen auf das Git-Repository und wird von Git ignoriert.

Der Pfad der Git-Projektablage eines Projekts ist in der Ansicht Git-Projekteinstellungen sichtbar.

Die Konfigurationseinstellungen, die in der Datei .git/config vorliegen, können in einem CODESYS Git -Projekt über einen Konfigurationsdialog verändert werden. Falls aus vorherigen Git-Aktionen noch keine globale config-Datei im lokalen Benutzerverzeichnis vorliegt, wird der Anwender beim Initialisieren oder Klonen eines Projekts aufgefordert, eine Konfiguration anzulegen.

CODESYS-Projektverzeichnis

Ein mit CODESYS Git verwaltetes Projekt wird zusätzlich zur Git-Projektablage immer auch in einem „normalen“ CODESYS-Projektverzeichnis abgelegt (doppelte Datenhaltung).

Remote-Repository

Ansicht Git Remotes

git remote

Wichtig

Achten Sie auf eine sichere Verbindung zu einem Remote-Server. Für weitere Informationen siehe: Security für CODESYS Git

Remote-Repositorys sind Versionen Ihres Projekts, die im Internet oder irgendwo im Netzwerk gehostet werden. Es ist durchaus möglich, dass Sie mit einem „entfernten“ Repository arbeiten können, das sich tatsächlich auf demselben Rechner (Host) befindet auf dem Sie gerade arbeiten.

Das Remote-Repository heißt üblicherweise origin.

Ein CODESYS-Projekt, das bereits unter Git-Verwaltung in einem lokalen Git-Repository ist, kann in der Ansicht Git Remotes mit einem Remote-Repository verknüpft werden (git remote, git remote add).

Erst dann können lokale Branches Remote-Branches „tracken“ und können für lokale Branches äquivalente Branches im Remote Repository erzeugt werden („Upstream“). Und erst dann kann mit Fetch, Pull, Push und Merge ein Austausch/Zusammenführen von Commits zwischen dem lokalen Git-Repository und dem Remote-Repository erfolgen.

Um Git-Operationen mit einem Remote-Repository durchzuführen, werden in der Regel Anmeldedaten zur Authentifizierung benötigt. Diese werden in Windows in der Anmeldeinformationsverwaltung gespeichert. Für alle Remote-Repositorys, die auf demselben Host-Server liegen, können diesselben Anmeldedaten verwendet werden. Für weitere Informationen sehen Sie: Anmeldedaten erforderlich.

Lokale Branches, Remote-Branches

Ansicht Git-Branches

git remote

git branch

Es gibt genau zwei Arten von Branches: „Lokal“ und „Remote“. Ein lokaler Branch kann genau einen Remote-Branch „tracken“.

Lokale Branches:

Lokale Branches werden in der Ansicht Git-Branches Lokal (<n>) angezeigt.

Der lokale Standard-Branch eines Git-Repositorys (üblicherweise master entsteht automatisch nach dem ersten Commit. Wenn das CODESYS-Projekt mittels git clone erstellt wurde, trackt der lokale „master“-Branch automatisch den Remote-Branch gleichen Namens.

Ein lokaler Branch entsteht auch durch Kopieren eines bereits vorhandenen lokalen Branches, oder durch Auschecken eines Remote-Branches. Im letzteren Fall trackt der neu entstandene lokale Branch automatisch den Remote-Branch.

Remote-Branches:

Remote-Branches werden in der Ansicht Git-Branches Remote (<n>) angezeigt. Sie sind im Git-Repository vorhandene Stellvertreter des jeweiligen gleichnamigen Branches im Remote-Repository.

Remote-Branches dienen nur intern als „Zwischenstation“ bei der Kommunikation über Push / Pull mit dem Remote-Repository und werden vom Anwender nicht direkt benutzt.

Upstream"

Befehl in der Ansicht Git-Branches Lokal

git branch --set-upstream-to <origin/remote-branch>

Die Aktion Upstream Set bewirkt, dass ein dem lokalen Branch entsprechender Branch im Remote-Repository angelegt wird (Remote-Branch).

Tracken", „Remote Tracking Branches“

Befehl in der Ansicht Git-Branches

git branch --track

git checkout

Branch tracken heißt, die Verknüpfung eines lokalen Branches mit einem Remote-Branch herstellen.

Standardfall: Der lokale Stellvertreter-Branch master des Git-Repositorys trackt den Remote-Branch origin/master des Remote-Repositorys.

Wenn ein lokaler Branch einen Remote-Branch trackt, ist ein Austausch von Commits mit dem Remote Repository über Pull und Push möglich.

Alternativ können Sie auch mit dem Befehl Checkout in der Ansicht Git-Branches Remote (<n>) für einen vorhandenen Remote-Branch einen lokalen „tracking“ Branch erzeugen, der gleichzeitig als „Aktueller“ Branch gesetzt wird. Der aktuelle (current) Branch ist derjenige Branch, in dem neue Commits ankommen.

Git Index

Ansicht Git-Status

git status

Der Index ist eine Git-interne Zwischenebene zwischen Arbeitsverzeichnis und Git-Repository. Er ermöglicht, gezielt nur eine Auswahl von geänderten Objekten für einen Commit vorzumerken. Nicht alle Änderungen müssen als Commit eingecheckt werden.

Objekte, die im Git-Index liegen, sind in der Ansicht Status & Vormerken in der Sektion Vorgemerkte Änderungen sichtbar.

Resynchronisierung und Neuladen des Projekts

Synchronisierung

Eine Resynchronisation des CODESYS -Projekts in CODESYS mit dem aktuellen Stand aus der Git-Projektablage erfolgt nach jeder Git-Operation, die eine Änderung am Git-Repository ausführt. Solche Operationen sind u.a.:

  • Checkout, Pull und Merge von Branches (Ansicht Git-Branches)

  • Alle Änderungen verwerfen und Alle nicht übertragenen Änderungen rückgängig machen (Ansicht Status & Vormerken)

  • Änderungen durch das Auflösen von Konflikten

Das Resynchronisieren des CODESYS-Projekts bewirkt, dass das Projekt als Ganzes neu aus dem Repository erstellt wird. Es wird nicht versucht, das Projekt zu aktualisieren.

Mit dem Befehl Projekt aus Repository neu laden können Sie eine Resynchronisierung explizit veranlassen.

MIt Synchronisierung ist umgekehrt die Übernahme von Änderungen aus der CODESYS-Projektablage in die Git-Projektablage gemeint. Dies erfolgt immer dann, wenn im CODESYS-Projekt geändert wird. Bei Änderungen im Projekt werden nur genau diese übernommen. Wenn das Projekt neu geöffnet wird, wird das komplette Projekt erneut in die Git-Projektablage übernommen und überschreibt den dortigen Stand.

Mit dem Befehl Projekt mit Git-Projektablage synchronisieren(standardmäßig nicht im Git-Menü) können Sie eine Synchronisierung explizit veranlassen.