doku:wissenschaftliches_schreiben_mit_git_und_latex
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doku:wissenschaftliches_schreiben_mit_git_und_latex [2015/09/27 10:02] – [Erste Schritte] TODO: .gitignore schon beim Anlegen erstellen zu kompliziert? daniel | doku:wissenschaftliches_schreiben_mit_git_und_latex [2020/05/25 22:03] (current) – [Siehe auch] SLUB-Artikel zum Wiss.schreiben verlinkt Norman | ||
---|---|---|---|
Line 3: | Line 3: | ||
**Diese Anleitung ist noch unvollständig und wird weiter ausgebaut.** | **Diese Anleitung ist noch unvollständig und wird weiter ausgebaut.** | ||
- | [[https:// | + | [[https:// |
- | In diesem Tutorial soll es um einen anderen Vorteil gehen, den LaTeX für das akademische Schreiben hat: Das Textformat erlaubt die Verwendung eines Versionskontrollsystems. Die Zielgruppe dieser Anleitung sind alle, die LaTeX schon verwenden (oder gerade erlernen) | + | LaTeX-Kurs von Daniel und Tom an der HTW Dresden |
+ | * {{ :doku: | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * Quellcode und Übungen: https:// | ||
- | ===== Eine Kurze Einführung in Verteilte Versionskontrolle und git ===== | + | Weiterführende Links: |
- | s.a. [[http:// | + | * [[doku:latex: |
+ | |||
+ | |||
+ | In diesem Tutorial soll es nun um einen anderen Vorteil gehen, den LaTeX für das akademische Schreiben hat: Das Textformat erlaubt die Verwendung eines Versionskontrollsystems. Die Zielgruppe dieser Anleitung sind alle, die LaTeX schon verwenden (oder gerade erlernen) und keine Angst vor der Shell haben (und am besten ein Unix-System verwenden). | ||
+ | |||
+ | ===== Eine Kurze Einführung in Verteilte Versions- & Variantenverwaltung und git ===== | ||
Die Idee von Versionskontrollsystem ist, dass man zu einem Dokument (oder einem Verzeichnisbaum) auch auf alle vorigen Versionen zugriff hat und Werkzeuge hat um Änderungen zu verwalten (z. B. abgleichen mit den Änderungen die jemand anderes an den Dateien vorgenommen hat, paralleles Bearbeiten verschiedener Versionen). Außerdem machen Versionskontrollsysteme es leicht die gesamten Daten auf mehrere Computer zu verteilen und synchron zu halten. Ein Verzeichnisbaum zusammen mit seiner Bearbeitungsgeschichte nennt man // | Die Idee von Versionskontrollsystem ist, dass man zu einem Dokument (oder einem Verzeichnisbaum) auch auf alle vorigen Versionen zugriff hat und Werkzeuge hat um Änderungen zu verwalten (z. B. abgleichen mit den Änderungen die jemand anderes an den Dateien vorgenommen hat, paralleles Bearbeiten verschiedener Versionen). Außerdem machen Versionskontrollsysteme es leicht die gesamten Daten auf mehrere Computer zu verteilen und synchron zu halten. Ein Verzeichnisbaum zusammen mit seiner Bearbeitungsgeschichte nennt man // | ||
- | git gehört zu der (modernen) Klasse der Verteilten Versionskontrollsysteme, | + | Die Variantenverwaltung ergänzt dieses Konzept der linear aufeinander folgenden Versionen durch Branches (auf deutsch etwa: Äste oder Zweige). Dies wird aber erst später im Abschnitt über Branches behandelt. |
+ | |||
+ | git gehört zu der (modernen) Klasse der Verteilten Versionskontrollsysteme, | ||
Im nächsten Abschnitt wird allerdings zunächst gezeigt, warum git auch für einen einzeln Arbeitenden von Vorteil ist. | Im nächsten Abschnitt wird allerdings zunächst gezeigt, warum git auch für einen einzeln Arbeitenden von Vorteil ist. | ||
Line 19: | Line 35: | ||
Weiterführende Links: | Weiterführende Links: | ||
- | | + | |
===== Beispiel: git für Einen ===== | ===== Beispiel: git für Einen ===== | ||
Line 29: | Line 46: | ||
Bob schreibt eine Hausarbeit. Da er in der Vergangenheit schon oft durch Missgeschicke Änderungen verloren hat oder nach fehlgeschlagenen Verbesserungen an einem Absatz diese nicht wieder loswerden konnte ohne die Verbesserungen an einem anderen Absatz mühsam manuell in seine Sicherheitskopie zu übertragen, | Bob schreibt eine Hausarbeit. Da er in der Vergangenheit schon oft durch Missgeschicke Änderungen verloren hat oder nach fehlgeschlagenen Verbesserungen an einem Absatz diese nicht wieder loswerden konnte ohne die Verbesserungen an einem anderen Absatz mühsam manuell in seine Sicherheitskopie zu übertragen, | ||
+ | ==== Konfiguration ==== | ||
+ | |||
+ | Erstmal Konfiguriert Bob seine git Installation. Dies erfolgt am besten mit Kommando '' | ||
+ | |||
+ | $ git config --global user.name "Bob Penguin" | ||
+ | $ git config --global user.email " | ||
==== Erste Schritte ==== | ==== Erste Schritte ==== | ||
Line 76: | Line 99: | ||
$ git add arbeit.tex | $ git add arbeit.tex | ||
- | $ git commit | + | $ git commit |
- | Nun öffnet sich ein Texteditor (in der Regel vi, das ist in der Umgebungsvariable '' | + | Alternativ könnte er auch nur '' |
Einleitung geschrieben | Einleitung geschrieben | ||
- | Sobald er diese speichert und den Editor verlässt (vi '': | + | Sobald er diese speichert und den Editor verlässt (im vi: Esc-Taste und dann '': |
Um von den Änderungen auch eine Sicherheitskopie zu haben muss er nur in das Verzeichnis auf dem USB-Stick wechseln und | Um von den Änderungen auch eine Sicherheitskopie zu haben muss er nur in das Verzeichnis auf dem USB-Stick wechseln und | ||
Line 100: | Line 123: | ||
==== Branches, Merges und '' | ==== Branches, Merges und '' | ||
- | TODO | + | Zunächst wird kurz erklärt was ein git Repsository eigentlich ist. |
+ | |||
+ | Die Geschichte in einem git Repository ist ein azyklischer, | ||
+ | |||
+ | A B C | ||
+ | o< | ||
+ | |||
+ | Aus dem Graphen und dem Inhalt des Commits wird die Commit-ID per kryptographischer Checksumme abgeleitet und | ||
+ | identifiziert den Commit eindeutig (mit astronomisch kleiner Chance einer Kollision). | ||
+ | |||
+ | Zusätzlich dazu enthält das Repository den '' | ||
+ | |||
+ | Die Graphenstruktur erlaubt mehrere konkurrente Änderungen über einer Basisversion. | ||
+ | |||
+ | D E | ||
+ | o<---o | ||
+ | A / | ||
+ | o< | ||
+ | | ||
+ | |||
+ | Branches funktionieren wie " | ||
+ | |||
+ | D E <- bugfix | ||
+ | o<---o | ||
+ | A / | ||
+ | o< | ||
+ | | ||
+ | |||
+ | Der Commit der aktuell der Bezugspunkt für die git-Operationen ist wird mit '' | ||
+ | |||
+ | Um einen Branch zu wechseln wird das Kommando '' | ||
+ | |||
+ | $ git checkout bugfix | ||
+ | |||
+ | Danach sieht der Graph wie folgt aus: | ||
+ | |||
+ | D E <- bugfix <- HEAD | ||
+ | o<---o | ||
+ | A / | ||
+ | o< | ||
+ | | ||
+ | |||
+ | Das Arbeitsverzeichnis und der Index werden auf den Zustand der im Commit verzeichnet ist gesetzt. | ||
+ | |||
+ | Um am aktuellen Commit einen neuen Branch zu erzeugen verwendet man: | ||
+ | |||
+ | $ git branch neuer-branch | ||
+ | |||
+ | Danach kann man ihn mit '' | ||
+ | |||
+ | $ git checkout -b neuer-branch | ||
+ | |||
+ | Nach dieser Operation sieht der Graph wie folgt aus: | ||
+ | |||
+ | <- neuer-branch <- HEAD | ||
+ | D E <- bugfix | ||
+ | o<---o | ||
+ | A / | ||
+ | o< | ||
+ | | ||
+ | |||
+ | Nun können wir unsere Dateien bearbeiten und neue Commits erzeugen. Diese werden dann im aktuellen Branch verzeichnet: | ||
+ | |||
+ | <- bugfix | ||
+ | D E F G | ||
+ | o< | ||
+ | A / | ||
+ | o< | ||
+ | | ||
+ | |||
+ | Nun haben wir mehrere Branches, nun ist das Ziel diese wieder zusammenzuführen, | ||
+ | |||
+ | $ git checkout bugfix | ||
+ | $ git merge neuer-branch | ||
+ | |||
+ | Danach sieht unser Graph so aus: | ||
+ | |||
+ | <- bugfix | ||
+ | <- neuer-branch | ||
+ | D E F G | ||
+ | o< | ||
+ | A / | ||
+ | o< | ||
+ | | ||
+ | |||
+ | Diese Form des merges nennt man fast-forward (Vorspulen). Darüber hinaus gibt es "echte Merges", | ||
+ | wenn wir nun '' | ||
+ | |||
+ | $ git checkout master | ||
+ | $ git merge bugfix | ||
+ | |||
+ | Dann sieht der Graph wie folgt aus: | ||
+ | |||
+ | <- bugfix | ||
+ | <- neuer-branch | ||
+ | D E F G | ||
+ | o< | ||
+ | A / \ | ||
+ | o< | ||
+ | | ||
+ | |||
+ | Dabei wurde der merge-Commit '' | ||
===== Kollaboration mit git ===== | ===== Kollaboration mit git ===== | ||
- | TODO | + | git kann seine Vorteile noch besser ausspielen, wenn man mit anderen kollaboriert: |
+ | Jeder kann Unabhängig an seiner Version arbeiten und man kann die Änderungen dann | ||
+ | automatisiert zusammenführen. | ||
+ | |||
+ | Damit das geht braucht man ein git Repository. Da öffentlich github Repositories für wissenschaftliche | ||
+ | Projekte nicht zu empfehlen sind, sollte man seinen eigenen Server mit [[http:// | ||
+ | kann man z. B. [[https:// | ||
+ | |||
+ | Man sollte einen SSH schlüssel erzeugen (... TODO ...) und den öffentlichen Schlüssel beim Server eintragen. | ||
+ | |||
+ | Wenn man dort einen Account hat und ein Repo und die entsprechenden Berechtigungen eingerichtet hat, | ||
+ | kann man es mit | ||
+ | |||
+ | $ git clone user@server/ | ||
+ | |||
+ | klonen, dabei läuft die Authentifizierung über das SSH-public-key-Verfahren. | ||
+ | |||
+ | Danach kann man mit | ||
+ | |||
+ | $ git fetch | ||
+ | |||
+ | oder | ||
+ | |||
+ | $ git pull | ||
+ | |||
+ | Änderungen vom repository holen. Mit | ||
+ | |||
+ | $ git push | ||
+ | |||
+ | kann man seine eigenen Änderungen verbreiten. | ||
+ | |||
+ | Das erlaubt es gemeinsam mit anderen am Repository zu arbeiten und Änderungen auszutauschen. | ||
===== Automatisch erstellter Inhalt und Makefiles ===== | ===== Automatisch erstellter Inhalt und Makefiles ===== | ||
Line 114: | Line 269: | ||
* bibtex/ | * bibtex/ | ||
+ | |||
+ | ===== Siehe auch ===== | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[doku: | ||
{{tag> Wissenschaftliches_Schreiben git LaTeX Anleitung}} | {{tag> Wissenschaftliches_Schreiben git LaTeX Anleitung}} |
doku/wissenschaftliches_schreiben_mit_git_und_latex.1443340962.txt.gz · Last modified: 2015/09/27 10:02 by daniel