Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
linux:git [27.04.2022 17:03. ] – angelegt django | linux:git [15.01.2023 19:16. ] (aktuell) – [Git Index] django | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Verteilte Versionsverwaltung für Programmcode und Dokumente mit Hilfe von Git ====== | ====== Verteilte Versionsverwaltung für Programmcode und Dokumente mit Hilfe von Git ====== | ||
- | {{: | + | {{: |
+ | \\ | ||
+ | Git ist ein freies und quelloffenes, | ||
+ | In einem verteilten System wie Git gibt es viele gleichwertige Instanzen des Repositorys, | ||
+ | ===== Grundlagen ===== | ||
+ | ==== Literatur ==== | ||
+ | Zum Einlesen was Git insbesondere leisten kann, welche Einsatzgebiete es gibt, welche Unterschiede es zu zu anderen Versionsverwaltungstools wie z.B. Subversion oder CVS bietet, eigenen sich unter anderem folgende hervorragende Bücher, die auch online zur Verfügung stehen. | ||
+ | === Pro Git von Apress === | ||
+ | [[ https:// | ||
+ | === Das Git-Buch === | ||
+ | [[ http:// | ||
+ | |||
+ | ==== Git und seine Befehlsoptionen ==== | ||
+ | Einen schnellen Überblick über Git und seine Kommandos kann man mit Hilfe der Option '' | ||
+ | $ git --help | ||
+ | < | ||
+ | | ||
+ | [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare] | ||
+ | | ||
+ | < | ||
+ | |||
+ | These are common Git commands used in various situations: | ||
+ | |||
+ | start a working area (see also: git help tutorial) | ||
+ | | ||
+ | | ||
+ | |||
+ | work on the current change (see also: git help everyday) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | examine the history and state (see also: git help revisions) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | grow, mark and tweak your common history | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | collaborate (see also: git help workflows) | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | 'git help -a' and 'git help -g' list available subcommands and some | ||
+ | concept guides. See 'git help < | ||
+ | to read about a specific subcommand or concept. | ||
+ | See 'git help git' for an overview of the system.</ | ||
+ | |||
+ | Eine umfangreiche Dokumentation von Git liegt in Form vorinstallierter Manual-Pages vor, bei dem fast jedes Subkommando über eine eigene manpage verfügt. Die entsprechende Hilfeseiten erreicht man z.B. am Beispiel des Befehls **'' | ||
+ | $ man git-init | ||
+ | |||
+ | $ git init --help | ||
+ | bzw. | ||
+ | $ git help status | ||
+ | |||
+ | ==== Vorbereitende Konfiguration ==== | ||
+ | Damit **Git** bei einem **'' | ||
+ | $ git config --global user.name " | ||
+ | $ git config --global user.email " | ||
+ | |||
+ | Optional können wir, sofern ausser uns kein anderer Nutzer, Zugriff auf den Rechner hat, auch ein Passwort für spätere **'' | ||
+ | $ git config --global user.password " | ||
+ | |||
+ | Da wir auf unserer Linux-Admin Workstation unseren gewohnten Editor **'' | ||
+ | $ git config --global core.editor " | ||
+ | |||
+ | |||
+ | $ git config --global color.ui auto | ||
+ | |||
+ | $ git config --list --show-origin | ||
+ | < | ||
+ | file:/ | ||
+ | file:/ | ||
+ | file:/ | ||
+ | |||
+ | $ ls -alF ~/ | ||
+ | < | ||
+ | |||
+ | $ cat ~/ | ||
+ | < | ||
+ | name = Michael Nausch | ||
+ | email = django@nausch.org | ||
+ | password = 0l1v3r157einec001350ck3! | ||
+ | [core] | ||
+ | editor = vim | ||
+ | </ | ||
+ | |||
+ | ===== Git Beispielsprojekt - initiale Aufgaben ===== | ||
+ | ==== Arbeitsverzeichnis / Entwicklungsumgebung anlegen ==== | ||
+ | Zunächst legen wir uns im Arbeitsverzeichnis '' | ||
+ | $ mkdir -p $HOME/ | ||
+ | |||
+ | Dieses Verzeichnis ist aktuell noch leer und ohne jedwede Inhalte. | ||
+ | $ ls -alF ~/ | ||
+ | |||
+ | < | ||
+ | drwxrwxr-x 2 django django 4096 Apr 6 17:15 ./ | ||
+ | drwxrwxr-x 4 django django 4096 Apr 6 17:15 ../</ | ||
+ | |||
+ | ==== Erste Schritte mit Git ==== | ||
+ | Nun können wir unser Repository **'' | ||
+ | $ git init ~/ | ||
+ | |||
+ | Initialized empty Git repository in / | ||
+ | |||
+ | Im entsprechenden Verzeichnis finden wir nun das Verzeichnis **'' | ||
+ | ls -alF ~/ | ||
+ | < | ||
+ | drwxrwxr-x 3 django django 4096 Apr 6 17:33 ./ | ||
+ | drwxrwxr-x 4 django django 4096 Apr 6 17:15 ../ | ||
+ | drwxrwxr-x 7 django django 4096 Apr 6 17:33 .git/</ | ||
+ | |||
+ | $ tree / | ||
+ | < | ||
+ | ├── branches | ||
+ | ├── config | ||
+ | ├── description | ||
+ | ├── HEAD | ||
+ | ├── hooks | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | ├── info | ||
+ | │ | ||
+ | ├── objects | ||
+ | │ | ||
+ | │ | ||
+ | └── refs | ||
+ | ├── heads | ||
+ | └── tags | ||
+ | |||
+ | 9 directories, | ||
+ | In diesem Verzeichnis verwaltet **git** intern unser Repository. Wir brauchen diesem in aller Regel keine besondere Beachtung schenken und vertrauen und verlassen uns da voll darauf, dass **git** hier alles nötige verwalten wird. | ||
+ | |||
+ | Nun können wir mit der Option **'' | ||
+ | $ cd ~/ | ||
+ | |||
+ | Anschliessend fragen wir den Status ab. | ||
+ | $ git status | ||
+ | < | ||
+ | |||
+ | No commits yet | ||
+ | |||
+ | nothing to commit (create/ | ||
+ | |||
+ | Was genau teilt uns nun git hier mit? Nun zum einen weist ins git zum einen darauf hin, dass wir vor unserem ersten **commit** stehen **'' | ||
+ | <WRAP center round tip 80%> | ||
+ | Git ist aber so nett und gibt uns auch gleich einen Hinweis, was wir als nächsten tun sollten um diesen Makel zu beheben: \\ \\ | ||
+ | // | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Ansible: Directory Layout anlegen ==== | ||
+ | Da wir uns bei unserem Repository-Beispiel an den **[[http:// | ||
+ | |||
+ | Dieses Verzeichnis-Layout werden wir nun einfach und schnell auf den Weg bringen. Hierzu verwenden wir die nachfolgend gezeigten zwei Befehle bzw. genauer gesagt die beiden Befehlsketten: | ||
+ | $ mkdir -p ~/ | ||
+ | ~/ | ||
+ | ~/ | ||
+ | |||
+ | $ touch ~/ | ||
+ | ~/ | ||
+ | ~/ | ||
+ | |||
+ | Somit haben wir nun in unserem Repository Verzeichnis die gewünschte Struktur, das **Ansible Directory Layout**: | ||
+ | $ tree ~/ | ||
+ | < | ||
+ | ├── filter_plugins | ||
+ | ├── inventories | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | ├── library | ||
+ | ├── module_utils | ||
+ | ├── roles | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | └── site.yml | ||
+ | |||
+ | 22 directories, | ||
+ | |||
+ | Rufen wir nun erneut den **'' | ||
+ | $ git status | ||
+ | |||
+ | < | ||
+ | <font style=" | ||
+ | |||
+ | No commits yet | ||
+ | |||
+ | Untracked files: | ||
+ | (use "git add < | ||
+ | <font style=" | ||
+ | roles/ | ||
+ | site.yml | ||
+ | </ | ||
+ | <font style=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP center round important 80%> | ||
+ | Hmmm eigentlich komisch, da wir doch auch z.B. ein Verzeichnis haben wie dies hier: '' | ||
+ | </ | ||
+ | |||
+ | Wir werden also, dem Vorschlag von Git die drei **rot** markierten Zeilen mit einm **'' | ||
+ | $ git add inventories/ | ||
+ | $ git add roles/ | ||
+ | $ git add site.yml | ||
+ | |||
+ | Nun rufen wir erneut **'' | ||
+ | |||
+ | < | ||
+ | <font style=" | ||
+ | |||
+ | No commits yet | ||
+ | |||
+ | Changes to be committed: | ||
+ | (use "git rm --cached < | ||
+ | <font style=" | ||
+ | new file: | ||
+ | new file: | ||
+ | new file: | ||
+ | new file: | ||
+ | new file: | ||
+ | new file: | ||
+ | new file: | ||
+ | new file: | ||
+ | new file: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Nun ist es an der Zeit unseren ersten **Commit** um damit unsere Dateien Git zur Verwaltung anzuvertrauen; | ||
+ | |||
+ | ==== Unser erster Commit ==== | ||
+ | Nun ist es an der Zeit für unseren ersten initialen **'' | ||
+ | * Name des Authors inkl. seiner eMail-Adresse, | ||
+ | * Name des Committers ebenfalls mit seiner eMail-Adresse, | ||
+ | * Erstellungsdatum, | ||
+ | * Datum des Commits. | ||
+ | | ||
+ | Wir rufen den Befehl '' | ||
+ | |||
+ | <WRAP center round tip 80%> | ||
+ | Warum machen wir das? Nun, wir gewöhnen uns am besten von vorne herein eine saubere strukturierte Arbeitsweise an. Dies hilft uns und anderen später wesentlich bei der Nachvollziehbarkeit der einzelnen Commits und deren Dokumentation! | ||
+ | \\ | ||
+ | Am besten überlegen wir uns auch vorab, in welcher Sprache unsere Commit-Nachrichten verfasst werden sollen. Wer ist unser Publikum unser Kunde? Für private Projekte oder Projekten lokal agierender Gruppierungen bietet sind vermutlich Deutsch als grösster gemeinsamer Nenner an. Will man sein Projekt einem internationalen Publikum angedeihen lassen, wird vermutlich eher Englisch die gewählte Sprache sein. Ein Mischmasch ist sicherlich etwas was keinem so recht weiter helfen wird. | ||
+ | |||
+ | Um Commit Nachrichten besser lesbar zu halten, haben sich folgende Rahmenbedingungen als praktikabel erwiesen: | ||
+ | - Sprache gemäss dem Zielpublikum/ | ||
+ | - Erste Zeile beinhalten eine Zusammenfassung (max. 50 Zeichen) | ||
+ | - zweite Zeile leer lassen | ||
+ | - Ab Zeile drei Beschreibung des Commits mit einer max. Zeilenlänge von 76 Zeichen | ||
+ | |||
+ | Beim Verfassen der Commit-Beschreibung achten wir daher auf folgende Dinge: | ||
+ | - Wir erzwingen **__niemals__** leere Commit-Beschreibungen, | ||
+ | - Wir dokumentieren **// | ||
+ | - Wir sind selbstkritisch und ehrlich und weisen ggf. darauf hin, wenn wir der Meinung sind, dass ggf. noch weiterer Verbesserungs-/ | ||
+ | </ | ||
+ | |||
+ | Wir führen also nun unseren ersten commit durch und rufen den Git-Befehl '' | ||
+ | $ git commit | ||
+ | |||
+ | Da wir als Editor unseren Standard-Editor **'' | ||
+ | < | ||
+ | <font style=" | ||
+ | # Please enter the commit message for your changes. Lines starting | ||
+ | # with '#' | ||
+ | # | ||
+ | # On branch </ | ||
+ | <font style=" | ||
+ | # Initial commit | ||
+ | # | ||
+ | # </ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Neben Hinweisen zur Vorlage sehen wir auch noch welche Änderungen commited werden sollen. Gemäss, unserer Vorüberlegungen zu den Commit-Nachrichten tragen wir nun in die erste Zeile eine kurze Zusammenfassung (Überschrift ein, die von einer Leerzeile gefolgt wird. Ab Zeile drei beschreiben wir dann, was genau wir geändert haben. | ||
+ | < | ||
+ | <font style=" | ||
+ | |||
+ | <font style=" | ||
+ | <font style=" | ||
+ | # Please enter the commit message for your changes. Lines starting | ||
+ | # with '#' | ||
+ | # | ||
+ | # On branch </ | ||
+ | <font style=" | ||
+ | # Initial commit | ||
+ | # | ||
+ | # </ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | </ | ||
+ | </ | ||
+ | Wir Verlassen nun unseren Editor **VIM** und '' | ||
+ | < | ||
+ | 10 files changed, 0 insertions(+), | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Rufen wir nun den Status von Git erneut ab sehen wir, dass keine weiteren Dateien mehr anstehen, die eines commits bedürften. | ||
+ | $ git status | ||
+ | |||
+ | On branch master | ||
+ | nothing to commit, working tree clean | ||
+ | |||
+ | Eine Zusammenfassung unseres gerade ausgeführten Commits können wir mit dem Befehl '' | ||
+ | < | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | Date: Wed Apr 6 19:53:37 2022 +0200 | ||
+ | |||
+ | Initialer Commit. | ||
+ | | ||
+ | Ansible Directory Layout angelegt. | ||
+ | |||
+ | 10 files changed, 0 insertions(+), | ||
+ | </ | ||
+ | <font style=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Eine ausführlichere und detaillierte Aufstellung erhalten wir, wenn wir bei obigen Aufruf dir Option '' | ||
+ | $ git show | ||
+ | < | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | Date: Wed Apr 6 19:53:37 2022 +0200 | ||
+ | |||
+ | Initialer Commit. | ||
+ | | ||
+ | Ansible Directory Layout angelegt. | ||
+ | |||
+ | < | ||
+ | new file mode 100644 | ||
+ | index 0000000..e69de29 | ||
+ | diff --git a/ | ||
+ | new file mode 100644 | ||
+ | index 0000000..e69de29 | ||
+ | diff --git a/ | ||
+ | new file mode 100644 | ||
+ | index 0000000..e69de29 | ||
+ | diff --git a/ | ||
+ | new file mode 100644 | ||
+ | index 0000000..e69de29 | ||
+ | diff --git a/ | ||
+ | new file mode 100644 | ||
+ | index 0000000..e69de29 | ||
+ | diff --git a/ | ||
+ | new file mode 100644 | ||
+ | index 0000000..e69de29 | ||
+ | diff --git a/ | ||
+ | new file mode 100644 | ||
+ | index 0000000..e69de29 | ||
+ | diff --git a/ | ||
+ | new file mode 100644 | ||
+ | index 0000000..e69de29 | ||
+ | diff --git a/ | ||
+ | new file mode 100644 | ||
+ | index 0000000..e69de29 | ||
+ | diff --git a/site.yml b/site.yml | ||
+ | new file mode 100644 | ||
+ | index 0000000..e69de29</ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Alternativ können wir uns beim Befehl '' | ||
+ | $ git show HEAD | ||
+ | $ git show master | ||
+ | $ git show f5cd46ef0bbd7816edddefde79b2179de995e865 | ||
+ | $ git show f5cd46 | ||
+ | |||
+ | ==== Unser zweiter Commit ==== | ||
+ | Bei unserem Beispielprojekt haben wir für unser Ansible-Projekt ein Inventory definiert und angelegt. | ||
+ | $ tree inventories/ | ||
+ | < | ||
+ | ├── group_vars | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | ├── hosts | ||
+ | └── host_vars | ||
+ | └── rpb4-ol-a | ||
+ | </ | ||
+ | |||
+ | $ git tag -a v7.0 | ||
+ | < | ||
+ | # | ||
+ | # Write a message for tag: | ||
+ | # v7.0 | ||
+ | # Lines starting with '#' | ||
+ | |||
+ | $ git log | ||
+ | < | ||
+ | Author: Michael Nausch < | ||
+ | Date: Fri Apr 8 20:27:02 2022 +0200 | ||
+ | |||
+ | Vorerst V7.0 fertig gestellt. | ||
+ | | ||
+ | Erweiterung des playbocks um die angelegte role final. Hierfür die role | ||
+ | final angefügt, bei der letztendlich nur folgende Aufgabe erledigt wird: | ||
+ | - Reboot nach Abschluss des Baus unseres Offloaders. | ||
+ | | ||
+ | Zu ignorierende Dateien in der Konfigurationsdatei .gitignore definiert, | ||
+ | sowie Lizenz und README-Datei für den Upload bei GitHub angefügt. | ||
+ | | ||
+ | Da es aktuell Probleme mit der Installation und Konfiguration eines | ||
+ | OLE-Display von AZDelivery gibt, wurde die zugehörige Rolle aus früheren | ||
+ | Versionen erst einmal exkludiert. Diese Funktion wir in einem künftigen | ||
+ | neune Branch bzw. Version dann hoffentlich wieder nachgereicht - bitte | ||
+ | also noch um etwas Gelduld hierzu! | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | |||
+ | === Kürzere Commit-Hashes === | ||
+ | Bei einigen Git Befehlen ist die Angabe des Commit-Hashes wie z.B. '' | ||
+ | $ git log --abbrev-commit | ||
+ | |||
+ | Git zeigt somit automatisch eine verkürzte siebenstellige eindeutige Länge an, die wir bei der Angabe der betreffenden Git Kommandos dann statt des vollständigen SHA1 Hashwertes verwenden können. | ||
+ | |||
+ | === kompremmierte verkürzte Git Logs === | ||
+ | $ git log --oneline | ||
+ | < | ||
+ | 2239227 Neue role client-mesh angefügt. | ||
+ | daf72d5 Neue role hostapd angefügt. | ||
+ | 55fd7e5 Neue role ext-respondd angefügt. | ||
+ | 91fd641 Neue role vxlan angefügt. | ||
+ | 0b490b9 Neue role wireguard angefügt. | ||
+ | 1fff5ac Neue role batman angefügt | ||
+ | f780de1 Roles bereinigt und basic role angelegt. | ||
+ | aadeb57 Ansible-Inventory für den Offloader angelegt. | ||
+ | f5cd46e Initialer Commit.</ | ||
+ | |||
+ | |||
+ | |||
+ | Dieses doch schon etwas umfangreicheren Änderungen haben wir nun wie gewohnt **commited**. | ||
+ | Um herauszufinden was genau nun verändert und hinzugefügt wurde sehen wir uns nun im Detail in unserem Projekt-Repository mit Hilfe von Git an. | ||
+ | |||
+ | Zunächst einmal checken wir, wieviel Commits es bis jetzt gab. Dazu benutzen wir die Option '' | ||
+ | $ git log --oneline | ||
+ | |||
+ | < | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Es ist also " | ||
+ | |||
+ | Die genaue Beschreibung der einzelnen Commits lassen wir uns wie gewohnt mit **'' | ||
+ | < | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | Date: Wed Apr 6 21:16:22 2022 +0200 | ||
+ | |||
+ | Ansible-Inventory für den Offloader angelegt | ||
+ | | ||
+ | Zur Erstellung eines Offloaders im Freifunk München Netz benötigen wir | ||
+ | ein Inventory. Dieses Inventory (ini-Style) beinhaltet neben Gruppen- | ||
+ | und Host-Definitionen allgemeine Parameter (Gruppen-Variablen) aus dem | ||
+ | Freifunk-München Netz, wie auch Nodespezifische Parameter, (Host- | ||
+ | Variablen) die den Offloader selbst beschreiben. | ||
+ | | ||
+ | Der Nodebetreiber muss die Nodespezifischen Definitionen vor dem Starten | ||
+ | des Ansible Playbooks dann noch seinen Gegebenheiten vor Ort anpassen. | ||
+ | Nähere Informationen hierzu findet man in der zum Projekt passenden | ||
+ | Seite in Djangos WIKI: | ||
+ | https:// | ||
+ | </ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | Date: Wed Apr 6 19:53:37 2022 +0200 | ||
+ | |||
+ | Initialer Commit. | ||
+ | | ||
+ | Ansible Directory Layout angelegt.</ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Nun wollen wir aber doch mal ganz genau wissen, was der Author des Projekts denn wirklich alles abgeändert hat. Dazu benutzen wir wieder den Git-Befehl '' | ||
+ | $ git show | ||
+ | Wir befinden uns nun in einer Art "vim -R" Ansicht, in der wir wie gewohnt mit den Pfeil- und Bild-Tasten, | ||
+ | |||
+ | < | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | Date: Wed Apr 6 21:16:22 2022 +0200 | ||
+ | |||
+ | Ansible-Inventory für den Offloader angelegt | ||
+ | | ||
+ | Zur Erstellung eines Offloaders im Freifunk München Netz benötigen wir | ||
+ | ein Inventory. Dieses Inventory (ini-Style) beinhaltet neben Gruppen- | ||
+ | und Host-Definitionen allgemeine Parameter (Gruppen-Variablen) aus dem | ||
+ | Freifunk-München Netz, wie auch Nodespezifische Parameter, (Host- | ||
+ | Variablen) die den Offloader selbst beschreiben. | ||
+ | | ||
+ | Der Nodebetreiber muss die Nodespezifischen Definitionen vor dem Starten | ||
+ | des Ansible Playbooks dann noch seinen Gegebenheiten vor Ort anpassen. | ||
+ | Nähere Informationen hierzu findet man in der zum Projekt passenden | ||
+ | Seite in Djangos WIKI: | ||
+ | https:// | ||
+ | <br> | ||
+ | < | ||
+ | new file mode 100644 | ||
+ | index 0000000..8009916 | ||
+ | --- /dev/null | ||
+ | +++ b/ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | +gw_publickey: | ||
+ | + gw04: " | ||
+ | + gw05: " | ||
+ | + gw06: " | ||
+ | + gw07: " | ||
+ | <font style=" | ||
+ | new file mode 100644 | ||
+ | index 0000000..b57913e | ||
+ | --- /dev/null | ||
+ | +++ b/ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | +gw_linklocal: | ||
+ | + gw04: " | ||
+ | + gw05: " | ||
+ | + gw06: " | ||
+ | + gw07: " | ||
+ | <font style=" | ||
+ | new file mode 100644 | ||
+ | index 0000000..57b843f | ||
+ | --- /dev/null | ||
+ | +++ b/ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | +gw_vxlan_ids: | ||
+ | + muc_cty: | ||
+ | + muc_nord: 1920014 | ||
+ | + muc_ost: | ||
+ | + muc_sued: 12815947 | ||
+ | + muc_west: 29149 | ||
+ | + uml_nord: 403289 | ||
+ | + uml_ost: | ||
+ | + uml_sued: 12090508 | ||
+ | + uml_west: 935867 | ||
+ | + gauting: | ||
+ | + freising: 4669918 | ||
+ | + welt: | ||
+ | + augsburg: 2962115</ | ||
+ | <font style=" | ||
+ | new file mode 100644 | ||
+ | index 0000000..5175e72 | ||
+ | --- /dev/null | ||
+ | +++ b/ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | +dtparam: " | ||
+ | <font style=" | ||
+ | new file mode 100644 | ||
+ | index 0000000..e1db8fd | ||
+ | --- /dev/null | ||
+ | +++ b/ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | +vxlan_ids: | ||
+ | + muc_cty: | ||
+ | + muc_nord: 15521492 | ||
+ | + muc_ost: | ||
+ | + muc_sued: 8599288 | ||
+ | + muc_west: 7318933 | ||
+ | + uml_nord: 5705961 | ||
+ | + uml_ost: | ||
+ | + uml_sued: 16544703 | ||
+ | + uml_west: 16677749 | ||
+ | + gauting: | ||
+ | + freising: 12937858 | ||
+ | + welt: | ||
+ | + augsburg: 10700201</ | ||
+ | <font style=" | ||
+ | new file mode 100644 | ||
+ | index 0000000..874d184 | ||
+ | --- /dev/null | ||
+ | +++ b/ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | + muc_cty: | ||
+ | + muc_nord: 40003 | ||
+ | + muc_ost: | ||
+ | + muc_sued: 40005 | ||
+ | + muc_west: 40006 | ||
+ | + uml_nord: 40007 | ||
+ | + uml_ost: | ||
+ | + uml_sued: 40009 | ||
+ | + uml_west: 40010 | ||
+ | + gauting: | ||
+ | + freising: 40013 | ||
+ | + welt: 40011 | ||
+ | + augsburg: 40014</ | ||
+ | <font style=" | ||
+ | new file mode 100644 | ||
+ | index 0000000..9f09905 | ||
+ | --- /dev/null | ||
+ | +++ b/ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | +# Alugehäuse ohne Lüfter und ohne Display | ||
+ | +# MAC: dc: | ||
+ | +ansible_ssh_host: | ||
+ | +ansible_port: | ||
+ | +ansible_user: | ||
+ | +ansible_ssh_private_key_file: | ||
+ | +# | ||
+ | +batman_adv_version: | ||
+ | +ffmuc_segment: | ||
+ | +ffmuc_gateway: | ||
+ | +raspberry_hostname: | ||
+ | +node_contact_address: | ||
+ | +raspberry_latitude: | ||
+ | +raspberry_longitude: | ||
+ | +raspberry_wifi: | ||
+ | +raspberry_clientvlan: | ||
+ | +raspberry_meshvlan: | ||
+ | +raspberry_oled: | ||
+ | <font style=" | ||
+ | new file mode 100644 | ||
+ | index 0000000..637a3af | ||
+ | --- /dev/null | ||
+ | +++ b/ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | + | ||
+ | +# Definition einer Hostgruppe " | ||
+ | +[ffmuc] | ||
+ | + | ||
+ | +# Auflistung aller Hosts, die der vorgenannten Hostgruppe angehören. | ||
+ | +rpb4-ol-a</ | ||
+ | <font style=" | ||
+ | deleted file mode 100644 | ||
+ | index e69de29..00000 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Git Index ==== | ||
+ | |||
+ | <uml> | ||
+ | |||
+ | state " | ||
+ | workingtree : | ||
+ | workingtree : Lokales Arbeitsverzeichnis | ||
+ | workingtree : mit allen Verzeichnissen | ||
+ | workingtree : und Dateien - unser lokaler | ||
+ | workingtree : Arbeits- und Bearbeitungs- | ||
+ | workingtree : bereich. | ||
+ | workingtree : | ||
+ | |||
+ | state " | ||
+ | index : | ||
+ | index : Zwischenspeicher von Git, | ||
+ | index : der zwischen dem Working tree | ||
+ | index : und dem Repository steht. | ||
+ | index : Auch bekannt unter dem Namen | ||
+ | index : " | ||
+ | index : | ||
+ | |||
+ | state "Local Repository" | ||
+ | repo : | ||
+ | repo : Speicher für alle commits, | ||
+ | repo : also alle Änderungen mit | ||
+ | repo : den zugehörigen commit-Daten, | ||
+ | repo : also der vollständigen | ||
+ | repo : Versionsgeschichte. | ||
+ | repo : | ||
+ | |||
+ | state " | ||
+ | gitrepo : | ||
+ | gitrepo : remote Speicher für unser | ||
+ | gitrepo : lokales Repository umd so | ||
+ | gitrepo : mit anderen Personen oder | ||
+ | gitrepo : auf anderen Geräten das | ||
+ | gitrepo : Repository zu sharen. | ||
+ | gitrepo : | ||
+ | |||
+ | workingtree -right-> index : add | ||
+ | index -left-> workingtree : reset | ||
+ | index -right-> repo : commit | ||
+ | repo -right-> gitrepo : push | ||
+ | gitrepo -left-> repo: fetch | ||
+ | gitrepo -left-> repo: pull | ||
+ | repo -left-> workingtree : reset[commit] | ||
+ | gitrepo -left-> workingtree : pull | ||
+ | |||
+ | </ | ||
+ | |||
+ | Solange wir nicht mit einem **'' | ||
+ | |||
+ | Fragen wir nun den Status unser Umgebung ab. | ||
+ | $ git status | ||
+ | |||
+ | On branch main | ||
+ | Your branch is up to date with ' | ||
+ | | ||
+ | nothing to commit, working tree clean | ||
+ | |||
+ | Die Ausgabe **//working tree clean//** bedeutet hier nicht, dass der Index " | ||
+ | |||
+ | Was passiert nun beim Aufruf von **'' | ||
+ | $ git diff | ||
+ | |||
+ | Ist die Ausgabe " | ||
+ | $ git commit | ||
+ | |||
+ | On branch main | ||
+ | Your branch is up to date with ' | ||
+ | | ||
+ | nothing to commit, working tree clean | ||
+ | |||
+ | Mit der Option '' | ||
+ | Im Ausgangszustand, | ||
+ | |||
+ | |||
+ | |||
+ | ==== GitHub ==== | ||
+ | |||
+ | /* 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 */ | ||
+ | |||
+ | < | ||
+ | or | ||
+ | |||
+ | Get started by creating a new file or uploading an existing file. We recommend every repository include a README, LICENSE, and .gitignore. | ||
+ | …or create a new repository on the command line | ||
+ | |||
+ | echo "# ffmuc-offloader_rpb4" | ||
+ | git init | ||
+ | git add README.md | ||
+ | git commit -m "first commit" | ||
+ | git branch -M main | ||
+ | git remote add origin https:// | ||
+ | git push -u origin main | ||
+ | |||
+ | …or push an existing repository from the command line | ||
+ | |||
+ | git remote add origin https:// | ||
+ | git branch -M main | ||
+ | git push -u origin main | ||
+ | |||
+ | …or import code from another repository | ||
+ | |||
+ | You can initialize this repository with code from a Subversion, Mercurial, or TFS project.</ | ||
+ | |||
+ | https:// | ||
+ | |||
+ | /* | ||
+ | < | ||
+ | |||
+ | „https://< | ||
+ | |||
+ | |||
+ | In der .git/config Datei im Git Projekt Verzeichnis: | ||
+ | |||
+ | url = https:// | ||
+ | |||
+ | (unter Linux). | ||
+ | |||
+ | |||
+ | |||
+ | 1.Gehen Sie zuhttps:// | ||
+ | |||
+ | 2. Klicken Sie auf „Neuen Token generieren“ | ||
+ | |||
+ | 3. Wählen | ||
+ | |||
+ | 4. Klicken Sie auf „Token generieren“ | ||
+ | |||
+ | 5. Öffnen Sie nun auf Ihrem Computer in dem Verzeichnis, | ||
+ | |||
+ | 6. Stellen | ||
+ | |||
+ | |||
+ | 1. Das Protokoll ist „https“, | ||
+ | |||
+ | 2. Die URL enthält den Benutzernamen, | ||
+ | |||
+ | 3. Die URL enthält das soeben generierte Token | ||
+ | |||
+ | 7. Sobald | ||
+ | |||
+ | |||
+ | Quelle: andrey.mikhalchuk</ | ||
+ | */ | ||
+ | |||
+ | |||
+ | |||
+ | $ git remote add origin https:// | ||
+ | $ git branch -M main | ||
+ | $ git push -u origin main | ||
+ | < | ||
+ | Counting objects: 100% (169/169), done. | ||
+ | Delta compression using up to 8 threads | ||
+ | Compressing objects: 100% (155/155), done. | ||
+ | Writing objects: 100% (169/169), 41.24 KiB | 1.59 MiB/s, done. | ||
+ | Total 169 (delta 25), reused 0 (delta 0) | ||
+ | remote: Resolving deltas: 100% (25/25), done. | ||
+ | To https:// | ||
+ | * [new branch] | ||
+ | Branch ' | ||
+ | |||
+ | |||
+ |