+ - 0:00:00
Notes for current slide
Notes for next slide

Einführung in Markdown und Git

Git together: Dynamische Dokumente erstellen mit Werkzeugen des 21. Jahrhunderts.



ifes/iwp | FOM | Sebastian Sauer

1 / 107

Ihre Erwartungen an diesen Workshop

3 / 107

Lernziele

TEIL EINFÜHRUNG

  1. Relevanz von Reproduzierbarkeit vermitteln

TEIL MARKDOWN

  1. Nützlichkeit/Anwendungsfälle von Markdown vermitteln
  2. Kompetenz für typische Anwendungsfälle (für Markdown) vermitteln

TEIL GIT

  1. Nützlichkeit/Anwendungsfälle von Git vermitteln
  2. Grundkompetenz (von Git) vermitteln
4 / 107

Was ist das Wesensmerkmal der Wissenschaft?

"Habe den Mut, dich deines eigenen Verstandes zu bedienen".

Das Ein Wesensmerkmal der Wissenschaft ist Transparenz.

Wissenschaft heißt zeigen, nicht glauben.

5 / 107

Transparenz ist notwendig für Reproduzierbarkeit

reproducibility refers to the ability of a researcher to duplicate the results of a prior study using the same materials as were used by the original investigator. [GFI16].

Ein Forschungsbericht sollte wie ein Kochrezept sein: Alle Informationen sind enthalten, um das Gericht jeweils (ausreichend) gleich nachzukochen.

⚡ Ist ein Forschungsergebnis nicht reproduzierbar, sind wir zum (Nicht-)Glauben gezwungen. Das ist keine Wissenschaft.

Open Science: Open data, open materials, open code, literate programming ...

6 / 107

Beispiel: Projekt TIER

Project TIER (Teaching Integrity in Empirical Research) promotes the integration of principles and practices related to transparency and replicability in the research training of social scientists.

Our goal is to reach a day in which training in research transparency becomes standard and ubiquitous in the education of social scientists.

7 / 107

Aber haben wir ein Problem mit geringer Reproduzierbarkeit?

[Bak16]

Ja.

8 / 107

Was sind die Ursachen geringer Reproduzierbarkeit?

  • Fehlende Informationen
  • Fehlende Nachvollziehbarkeit
  • Copy-Paste-Fehler
  • Keine Syntax
  • Keine frei nutzbaren Messinstrumente
  • Software-Updates
  • Verwendete Software nicht mehr verfügbar
  • Verwendete Werkzeuge zu teuer
  • ...
9 / 107

Reproduzierbarkeit in typischer Forschungsarbeit

10 / 107

Ein prominenter Forscher zu "Point-and-Click"

[The command line] also saves you time and fulfills ethical obligations. With command scripts, each analysis documents itself, so that years from now you can come back to your analysis ans replicate it exactly. You can re-use your old files and send them to colleagues. Pointing and clicking, however, leaves no trail of breadcrumps. [...] Once you get in the habit of planning, running and preserving your statistical analysis in this way, it pays for itself many times over. With point-and-click, you pay down the road, rather than only up front. [McE16]

11 / 107

Wäre es nicht schön ... 1/2

"Die mittlere Reaktionszeit betrug [hier automatisch das Ergebnis der Berechnung einfügen] Sekunden."

12 / 107

Wäre es nicht schön ... 2/2

Bla bla bla ...

x1 = rechne(Input_Data)
x2 = rechne_mehr(x1)
x3 = irgendwas(x2)
x4 = wildes_zeugs(x3)

Die mittlere Reaktionszeit betrug x4 Sekunden.

Bla bla bla ...

Bla bla bla ...

Die mittlere Reaktionszeit betrug 3.141 Sekunden.

Bla bla bla ...

13 / 107

Gliederung

  1. Reproduzierbarkeit

  2. Markdown

  3. Git

  4. Fazit

14 / 107

Es geht: Z.B. mit Markdown

# Ich bin ein Titel.
Ich bin ein Satz.
Eine Liste beginnt.
- ja
- nein
- vielleicht
Eine nummerierte Liste:
1. 3.4145
2. 2.7182
3. 42

Ich bin ein Titel.

Ich bin ein Satz.

Eine Liste beginnt.

  • ja
  • nein
  • vielleicht

Eine nummerierte Liste:

  1. 3.4145
  2. 2.7182
  3. 42
15 / 107

Markdown ist fast WYSIWYG

__fett__,
_kursiv_,
~~durchgestrichen~~

fett,

kursiv,

durchgestrichen

16 / 107

Noch mehr Markdown

# Title level 1
## Title level 2
Link: [my blog](https://data-se.netlify.com/)
Citation: [@Xie2018]
Image: ![my image](imgs/R-logo_small.png)

.pull_right[

Title level 1

Title level 2




Link: my blog.

Citation: (Xie & Allaire, 2018)

Image:

17 / 107

Bilder einfügen

  • via Markdown:

    ![my image](imgs/R-logo_small.png)
  • via HTML:

    <img src="http://bit.ly/wiki-toddy" width="15%" align="right" />
  • via R:
    knitr::include_images("path_to_image")



Tipp: RStudio-Snippets anlegen für häufige Idiome.

18 / 107

Markdown ist eine Markup-Sprache

Markup-Sprachen nutzen Auszeichungen zur Formatierung von Text. Sie basieren auf Textdateien.

Bekannte Beispiele:

  • HTML
  • LaTeX
  • XML
  • Word (ist XML)
  • Powerpoint (ist XML)
  • ...

Markdown ist eine sehr einfache Markup-Sprache (daher "Mark-Down").

19 / 107

🏋 Übung: Erstellen Sie ein Markdown-Dokument in RStudio!

  1. In RStudio: File > New File > R Markdown > ... OK
  2. Löschen Sie alles, was in der Datei schon steht
  3. Schreiben Sie ein paar Zeilen in Markdown
  4. Klicken Sie auf "Knit" (engl. für stricken) oder drücken Sie Strg-Shift-K

Erklärvideo

20 / 107

Markdown is nicht Latex

\makeatletter
\newenvironment{kframe}{%
\medskip{}
\setlength{\fboxsep}{.8em}
\def\at@end@of@kframe{}%
\ifinner\ifhmode%
\def\at@end@of@kframe{\end{minipage}}%
\begin{minipage}{\columnwidth}%
\fi\fi%
\def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep
\colorbox{shadecolor}{##1}\hskip-\fboxsep
% There is no \\@totalrightmargin, so:
\hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
{\par\unskip\endMakeFramed%
\at@end@of@kframe}
\makeatother

Zum Glück.

21 / 107

Ich, als ich neulich kurz was in meiner Latex-Präambel ändern wollte

22 / 107

Markdown als lingua franca der Markup-Sprachen

Mit dem Programm Pandoc lassen sich Markup-Sprachen ineinander übersetzen.

23 / 107

Kurz mal Pause ...

Wir haben uns nicht mit Formatierung des Textes beschäftigt, nur mit seinem Inhalt.

Jemand (etwas) hat uns die Formatierung abgenommen.

24 / 107

R + Markdown = RMarkdown

# Überschrift Ebene 1
Bla bla bla.
__Fettdruck, weil dicke Hose__
```{r}
x <- 2^10
```
Die Lösung ist `r x`.
25 / 107

R-Diagramme

Auf dem üblichen Weg:

gf_point(mpg ~ hp, data = mtcars) %>%
gf_lm()

26 / 107

🏋 Übung: Erstellen Sie ein RMarkdown-Dokument in RStudio!

Sie können mit diesem Code beginnen und dann nach eigenem Belieben anpassen:

# Überschrift Ebene 1
Bla bla bla.
__Fettdruck, weil dicke Hose__
```{r}
x <- 2^10
```
Die Lösung ist `r x`.
27 / 107

Markdown ist schon ziemlich cool

28 / 107

Was sind die Metadaten eines Dokuments?

Metadaten sind Daten über Daten (hier: über ein Dokument), z.B.

29 / 107

Was sind die Metadaten eines Dokuments?

Metadaten sind Daten über Daten (hier: über ein Dokument), z.B.

  • Titel

  • Autor

  • Papiergröße

  • ...

29 / 107

Metadaten in RMarkdown

Metadaten werden in RMarkdown in einem Bereich, der mit --- vorne und hinten abgegrenzt ist, definiert:

---
title: "Das ist der Titel des Dokuments"
author: "Hier steht der Name des Authors"
date: 2019-09-16 # Man kann auch R-Inline-Befehle einflechten
---

Das Format ist i.d.R. Variable = Wert.

Genauer gesagt wird das (YAML-)Format verwendet.

Meist steht dieser Bereich zu Beginn des Dokuments (daher "YAML-Header").

30 / 107

🏋 Übung: Fügen Sie Ihrem Rmd-Dokument einen YAML-Header hinzu!

---
title: "Das ist der Titel des Dokuments"
author: "Hier steht der Name des Authors"
date: `r Sys.Date()`
---
# Überschrift Ebene 1
Bla bla bla.
__Fettdruck, weil dicke Hose__
```{r}
x <- 2^10
```
Die Lösung ist `r x`.
31 / 107

RMarkdown-Ablauf

32 / 107

Wofür kann man (R)Markdown alles verwenden?

33 / 107

Websites/Blogs

34 / 107

Berichte

35 / 107

Bücher

36 / 107

Folien (z.B. mit Xaringan)






👌

Xaringan basiert auf remark.js

37 / 107

Papaja: Eine Vorlage für APA-Manuskripte

39 / 107

yart: Eine Vorlage für Forschungsberichte

40 / 107

Poster mit posterdown

41 / 107

Interaktive Diagramme in HTML

42 / 107

Ja, aber - Sollte ich Markdown verwenden?

43 / 107

Markdown hat mehr Power

44 / 107

Ja, aber - ich liebe MS Word ...

Eine Seite mit Word, noch ein paar Seiten, und irgendwann ...

Markdown verkraftet auch große Dokumente.

45 / 107

Animationen

46 / 107

Buch "Moderne Datenanalyse mit R" (MODAR)

  • ca. 500 Seiten
  • ca. 200 Abbildungen
  • ca. 200 R-Codes

Relativ großes Doukument.

Keine Schnapp-Atmung beim Bearbeiten/Erstellen, aber relativ lange Kompilationsdauer (ca. 2 Minuten).

47 / 107

Pro MODAR-Kapitel eine Datei

rmd_files:
[
"index.Rmd",
"01_Statistik_heute.Rmd",
"02_Hallo_R.Rmd",
"03_R_starten.Rmd",
"04_Erstkontakt.Rmd",
# "05_Datenstrukturen.Rmd",
"06_Datenimport_und_export.Rmd",
...
]
48 / 107

MODAR-Metadaten-Datei

title: "Moderne Datenanalyse mit R"
subtitle: "Entwurf"
author: "Sebastian Sauer"
lang: de-De
documentclass: book
classoption: a4paper
fontsize: 11pt
fontfamily: mathpazo
...
49 / 107

MODAR-Beispielseite

50 / 107

🏋 Übung: HTML-Stylesheets

Vorab sind 13 HTML-Formatvorlagen (Stylesheets, Themes) installiert: “cerulean”, “cosmo”, “flatly”, “journal”, “lumen”, “paper”, “readable”, “sandstone”, “simplex”, “spacelab”, “united”, und “yeti”. Hier einige Beispiele.

Probieren Sie verschiedene aus!

---
title: "test"
output:
html_document:
theme: united
---
51 / 107

Snytax-Highlighting

Es gibt auch verschiedene Syntax-Highlight-Stile:

highlight specifies the syntax highlighting style. Supported styles include default, tango, pygments, kate, monochrome, espresso, zenburn, haddock, and textmate. Pass null to prevent syntax highlighting.

Überblick

Passen Sie Ihren YAML-Header entsprechend an:

---
title: "test"
output:
html_document:
# theme: united
highlight: tango
---
52 / 107

🏋 Übung: Prettydoc-Stylesheets (für HTML)

  1. Installieren Sie das R-Paket prettydoc mit install.packages("prettydoc").
  2. Öffnen Sie eine neue Rmd-Datei "from Template"
  3. Wählen Sie die prettydoc-Vorlage
  4. Basteln Sie nach Herzenslust daran herum.
  5. Wählen Sie weitere Vorlagen etc.

Projektseite

53 / 107

🏋 Übung: Chunk-Options

R-Chunks kann man mit Optionen versehen, um die Ausgabe zu steuern.

Entschlüsseln Sie die Bedeutung der Chunk-Optionen!

```{r demo-plot, out.width="70%", fig.align = "center",
echo = FALSE, eval = FALSE}
knitr::include_graphics("imgs/modar-sample1.png")
```

Lesen Sie hier mehr über Chunk-Optionen!

54 / 107

Ein Credo zum Textschreiben

Ich glaube, dass man beim Schreiben ...

  1. nur schreiben soll, sich nicht schon mit der Formatierung beschäftigen soll.

  2. immer nur eine Sache zu einer Zeit tun soll. Man beginne mit der Gliederung, es folgen stichpunktartige Notizen , schließlich formuliere man Sätze , danach erst beginne man mit Formatierung.

  3. reichlich von Metatext Gebrauch machen soll, in Sinne von Kommentaren über seinen Text (als Gedankenstütze).

  4. zum Schluss auf anspruchsvolle Typografie achten soll (Ästhetik und Lesbarkeit). Allerdings verzichte man auf Schnörkel.

  5. nicht einen 500-Seiten-Haufen schreiben soll, sondern intensiv und auf mehreren Ebenen gliedern soll (Ordner, Dateien, Dateien für Bilder oder Daten, Kapitel, Absätze, ...).

55 / 107

Grundlagen des Zitierens

  • Zitations-Infos sollten im Bib-Format in einer Datei abgelegt sein (s. rechte Seite).
  • Im YAML-Header wird der Dateiname mit den Zitationsinfos festgelegt.
  • Außerdem wird im YAML-Header etwaige Zitationsstile (z.B. APA6) definiert.
  • Im Text kann dann mit [@ID] zitiert werden, z.B. [@baker_1500_2016]
@article{baker_1500_2016,
title = {1,500 Scientists Lift ...},
volume = {533},
issn = {0028-0836, 1476-4687},
language = {en},
number = {7604},
journal = {Nature},
doi = {10.1038/533452a},
author = {Baker, Monya},
month = may,
year = {2016},
pages = {452-454}
}
56 / 107

🏋 Übung: Zitieren

  1. Erstellen Sie eine Datei namens Literatur.bib im Verzeichnis Ihrer Rmd-Datei.
  2. Kopieren Sie einen Zitationseintrag im Bib-Format (s. vorherige Seite) in Ihre Literatur-Datei (oder nehmen Sie diese).
  3. Fügen Sie den Namen ihrer Literaturdatei in den YAML-Header ein mit dem Parameter bibliography: <name.bib>.

Wenn Sie keinen Pfad (zu Ihrer Literaturdatei) angeben, so muss diese im gleichen Verzeichnis wie die Rmd-Datei liegen.

---
blablabla
bibliography: Literatur.bib
blablabla
---

Hier finden Sie einen Lösungsvorschlag.

57 / 107

Zitationsstil wählen

Böse Zungen behaupten, es gäbe mehr Zitationsstile als Journals ...

Eine gängige Variante zur Definition von Zitationsstilen ist das CSL-Format.

Um einen Zitationsstil zur Formatierung Ihrer Zitationen anzuwenden, müssen Sie:

  • Den Zitationsstil als CSL-Datei herunterladen (z.B. von hier oder von hier, schon als APA6)
  • Die CSL-Datei in Ihr Verzeichnis stellen (dort, wo sich auch die Rmd-Datei befindet)
  • Im YAML-Header mit dem Parameter csl: <csl-datei.csl> auf die Datei verweisen.
58 / 107

Tabellen 1

Es gibt viele Optionen für Tabellen in Markdown via R, z.B. knitr::kable()

knitr::kable(head(iris), format = "html")
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
5.4 3.9 1.7 0.4 setosa
59 / 107

Tabellen 2

DT::datatable(
head(iris, 5),
fillContainer = FALSE, options = list(pageLength = 8)
)
60 / 107

Referenzieren von Abschnitten

# Wichtiges Kapitel {#wichtig}
blablabla
# Unwichtiges Kapitel
Man lese im Kapitel \@ref(wichtig).

Das Referenzieren von Kapiteln ist hier nachzulesen.

Um Referenzier-Funktionen der Art @ref(id) nutzen zu können, passen Sie bitte Ihren YAML-Header wie folgt an:

blablabla
output:
bookdown::pdf_document2
<weitere-output-angaben>
blablabla
61 / 107

Referenzieren von Abbildungen

Ein Beispiel

Ein Beispiel

Wie in Abbildung \@ref(fig:demo-plot) ersichtlich ...
62 / 107

Referenzieren von Tabellen

mtcars %>%
head(3) %>%
knitr::kable(caption = "Tabellen-Beschriftung", format = "html")
Tabellen-Beschriftung
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Wie in Tabelle \@ref(tab:demo-tab) ersichtlich ...

🏋 Übung: Referenzieren

Erstellen Sie eine Dokument, in dem Sie (Kapitel, Abbildungen und/oder Tabellen) referenzieren!

Anstelle von pdf_document2 ist auch html_document2 möglich.

Hier finden Sie einen Lösungsvorschlag.

63 / 107

Weitere Formatierungsoptionen

  • RStudio bietet einige gute Tutorials, z.B. hier.
64 / 107

Buch zum Einstieg

65 / 107

Dieses ist auch gut

66 / 107

Gliederung

  1. Reproduzierbarkeit

  2. Markdown

  3. Git

  4. Fazit

67 / 107

Jungwissenschaftler Sebastian S. -- Ein Drama in 3 Akten (1/3)

🤓

Jung- Forscher Sebastian S.

  • Unser Jungwissenschaftler schreibt als brave Fleißbiene 🐝 einen Entwurf für einen Fachartikel 📜.

  • Den Text (als Word) schickt er an seine Betreuer 👩‍🔬 👨‍🔬 (und weitere wichtige Menschen 🧝‍♀️ 🦸‍♂️ 👩‍💻, die auf dem Paper als Coautoren erscheinen möchten). Insgesamt an fünf Menschen.

68 / 107

2. Akt

🤓

Jung- Forscher Sebastian S.

  • Die wichtigen Menschen tun, was Sie immer tun, und manche schicken irgendwann irgendetwas an den Jungwissenschaftler zurück.

  • Der Jungwissenschaftler versucht, die fünf Beiträge mit seinem Entwurf zusammenzufassen.

69 / 107

3. Akt

🧟‍♂️

Jung- Forscher Sebastian S.

läuft AMOK

  • Beim Jungwissenschaftler ist eine nervöse Selbstauflösung zu beobachten.

70 / 107

Wie können wir den Jungwissenschaftler glücklich machen?

Desiderata der Änderungsnachverfolgung beim Texte schreiben

Nr Desideratum Word Git
1 Übersichtlichkeit Nein Ja
2 Exakte Kontrolle Nein Ja
3 Schutz vor versehentlichem Überschreiben Nein Ja
4 Mehrpersonentoleranz (Kollaboration) Nein Ja
5 Varianten Nein Ja
6 Robustheit bei großen Dokumenten Nein Ja
7 Technische Ausfallsicherheit Nein Ja
8 Produktunabhängigkeit Nein Ja
9 Flache Lernkurve Ja Nein
71 / 107

Dateien versionieren -- kann helfen

72 / 107

Wäre es nicht schön ... 1/2

Wenn man Änderungen am Text in zusammengehörigen Bündeln schön übersichtlich sehen könnte?




Betrachten Sie dieses Beispiel-Repo:

https://github.com/sebastiansauer/test_ses

73 / 107

Wäre es nicht schön ... 2/2

Wenn man dann für jedes "Änderungsbündel" die Änderungen schön übersichtlich sehen könnte?

Natürlich sollte Autor und Zeitpunkt der Änderung auch dokumentiert sein.

74 / 107

Je größer das Projekt,

... desto wichtiger ist ein gutes Werkzeug zur Änderungskontrolle

Ein "Änderungsbündel" wird in Git als Commit bezeichnet. Ein Git-Ordner mit allem Drum und Dran wird als Repo(sitorium) bezeichnet.

75 / 107

Beispielprojekt: Statistik-Vorlesungen an der FOM

196 Dokumente in 63 Ordnern, 825 Mb

76 / 107

Solch große Projekten sind nicht gut in Word aufgehoben

Dafür ist Word nicht gemacht.

77 / 107

Auszug aus den Commits im Repo Vorlesungen

78 / 107

Quiz mit Word

  1. Wer hat "liegt eine Stichprobe geändert"?
  2. Was stand an dieser Stelle davor?
  3. Handelt es sich bei der Änderung um eine Ergänzung oder eine Modifikation oder eine Löschung?
  4. Ist "Autor" ein Name oder der Urheber des Dokuments?
  5. Wann wurden die Änderungen vorgenommen?
  6. Wie kann man den Verlauf der Änderungen sehen?
79 / 107

Git-Workflow 1

  1. Git starten (Odner für Git initialsieren)
  2. Änderungen vornehmen (ggf. an mehreren Dateien)
  3. Dateien auswählen, deren Änderungen dokumentiert werden sollen ("adden" oder "stagen")
  4. Änderungen einstellen ("committen")
  5. Änderungen zum Server replizieren ("pushen")
  6. Ggf. Änderungen prüfen und kommentieren
80 / 107

Komponenten eines Git-Projekts

  • Repository: Der Container, der alle Dateien und alle Änderungen eines Projekt enthält.

  • Working Tree: Dateisystem der Repos in aktueller (oder frühere) Version

  • Staging Area (Index): Dokumentiert Dateien mit Änderungen, die noch nicht eingestellt sind.

  • Head: Aktuellste Version des Projekts (neuester Commit) im aktuellen Branch

  • Branch: Variante des Projekts

81 / 107

Git-Workflow mit Fachbegriffen

82 / 107

Aber lohnt sich Git für mich?

A solo data analyst, working on a single computer, will benefit from adopting version control. But not nearly enough to justify the pain of installation and workflow upheaval. There are much easier ways to get versioned back ups of your files, if that’s all you’re worried about.

In my opinion, for new users, the pros of Git only outweigh the cons when you factor in the overhead of communicating and collaborating with other people.

https://happygitwithr.com/big-picture.html

83 / 107

Github

  • Hosting-Anbieter für Git-Repos

  • 2018 von Microsoft gekauft (7.5 Mrd. USD)

  • Neben reinem Git werden noch ergänzende Funktionen wie Issues (Art Ticketsystem) etc. angeboten

  • Größte Sammlung von Source Code in der Welt

https://en.wikipedia.org/wiki/GitHub

84 / 107

Git* installieren

  1. Account (kostenlos) bei Github anlegen
  2. RStudio herunterladen bzw. aktualisieren
  3. Git herunterladen/installieren Hinweise
  4. Bei Git anmelden
  5. Git-Editor (z.B. Github Desktop) installieren
85 / 107

Ein erstes Repo anlegen 1/2

  1. Loggen Sie sich bei Github ein.
  2. Klicken Sie bei "Repositories" auf New (grüner Knopf).

86 / 107

Ein erstes Repo anlegen 2/2

  1. Füllen Sie die Maske aus.
  2. Grünen Knopf drücken ("Create Repository"). Fertig!

87 / 107

Das Repo "clonen" 1/2

  1. Gehen Sie in das Repo.
  2. Klicken Sie auf den grünen Knopf ("Clone or Download"), wählen Sie "Clone".
  3. Kopieren Sie den Git-Link heraus, z.B. "git@github.com:sebastiansauer/test_ses.git".

88 / 107

Das Repo "clonen" 2/2

  1. Öffnen Sie RStudio
  2. Legen Sie ein Git-Projekt an: File > New Project ... > Version Control > Git.
  3. Kopieren Sie bei "Repository Url" die Git-Url Ihres Repos ein.
  4. Verzeichnisname etc. können Sie nach Belieben wählen.

89 / 107

🏋 Übung: Legen Sie sich ein Github-Repo in RStudio an

Jetzt haben Sie Ihr Repo in RStudio verfügbar.

Vertiefung: Passwörter-Cache mit Git/Github

90 / 107

🏋 Übung: Stellen Sie Änderungen in Ihr Repo ein.

91 / 107

Mögliche Probleme

Das Buch von Jenny Bryant Happy Git with R gibt eine gute Einführung in das Thema.

Dort finden Sich auch Hinweise bei Problemen.

92 / 107

🏋 Übung: Arbeiten Sie im Team

  1. Fügen Sie sich in Ihrem Github-Repo gegenseitig als Mitarbeiter hinzu: Settings > Collaborators.
  2. Sie müssen dazu die entsprechenden Nutzernamen wissen.
  3. Ändern Sie nun etwas an einem Repo, zu dem Sie eingeladen wurden.

93 / 107

Einige Git-Befehle für die Kommandozeile (Terminal)

  • git init: Legt in einem Ordner die Git-Infrastruktur an.
  • git status: Gibt einen Überblick über den Status eines Repos.
  • git add .: Fügt alle Dateien dem Index zu (staged die Dateien).
  • git commit -m "meine nachricht". Committed die gestageden Dateien und fügt eine (hoffentlich aussagekräftige) Nachricht hinzu
  • git pull: Zieht das Repo vom zentralen Server und mergt es in das lokale Repo.
  • git push: Lädt das lokale Repo zum zentraler Server hoch.
  • git stash: Speichert die aktuellen Änderungen (sofern noch nicht committed) temporär.
  • git blame: Zeigt, wer als letztes eine bestimmte Zeile einer Datei verändert hat.
94 / 107

frühere Zustände betrachten - git checkout <id>

Mit

git checkout a1e8fb5

versetzt man den Working Tree in dem Zustand des Commits mit der ID a1e8fb5.

Man kann jetzt keine Änderungen vornehmen (detached head), sondern nur alte Zustände betrachten1.

Mit git checkout master kommt man wieder zum aktuellen Stand auf dem Branch master.

1: Aber man kann von diesem Zustand aus einen neuen Branch öffnen mit z.B git checkout -b my_new_branch.

95 / 107

Frühere Zustände wiederherstellen 3/3 - git checkout <commit-hash> <file>

git checkout git checkout bdcd88fdf18bce554046b4188e0a8aee0b5f1b0a Tweets-Data/party_tweets.Rda

Damit wird eine Datei/ein Ordner aus dem Commit <commit-hash> im Working Directory wiederhergestellt.

Mit

git reset HEAD~2 foo.R

Wird die Datei foo.R aus dem 2. letzten Commit wiederhergestellt.

https://www.atlassian.com/git/tutorials/resetting-checking-out-and-reverting

96 / 107

Frühere Zustände wiederherstellen 2/3 - git revert

Einen früheren Commit wiederherstellen:

git revert HEAD

Damit wird der Zustand

Anstelle von HEAD kann man auch eine Commit-ID angeben.

https://www.atlassian.com/git/tutorials/undoing-changes/git-revert

97 / 107

Frühere Zustände wiederherstellen 3/3 - git reset

So widerrufen Sie Änderungen unwiderruflich:

git reset --hard HEAD~

Working Tree und HEAD werden auf den Vorfahren des Heads zurückgesetzt. Der Index ist leer (keine Dateien auf der Staging Area).

So löscht man Änderungen im Working Directory (d.h. nicht committed)

git reset --hard

git reset zum Unstaggen aller Dateien

98 / 107

Buch Pro Git zum Einstieg und Vertiefen

freie Online-Version

99 / 107

Wir brauchen eine Pause.

100 / 107
101 / 107

Gliederung

  1. Reproduzierbarkeit

  2. Markdown

  3. Git

  4. Fazit

102 / 107

OK, es kann auch Probleme geben

StackOverflow ist der Retter in Not.

103 / 107

Literatur

Baker, M. (2016). "1,500 Scientists Lift the Lid on Reproducibility". En. In: Nature 533.7604, pp. 452-454. ISSN: 0028-0836, 1476-4687. DOI: 10.1038/533452a.

Goodman, S. N, D. Fanelli, and J. P. A. Ioannidis (2016). "What Does Research Reproducibility Mean?" In: Science Translational Medicine 8.341, pp. 341ps12-341ps12. ISSN: 1946-6234, 1946-6242. DOI: 10.1126/scitranslmed.aaf5027.

McElreath, R. (2016). Statistical Rethinking. New York City, NY: Apple Academic Press Inc.. ISBN: 1-4822-5344-5.

105 / 107

Jetzt sind Sie dran

106 / 107

Reproducibility

  • Versions of employed software as of 2019-09-16, running this OS: macOS Mojave 10.14.6.
  • Built with R, R version 3.6.0 (2019-04-26), RStudio 1.2.1335, xaringan, on the shoulders of giants
  • Icons are from FontAwesome, licenced under CC-BY-4 (details)
  • R-Packages used: assertthat_0.2.1, backports_1.1.4, bibtex_0.4.2, brew_1.0-6, broom_0.5.2, cellranger_1.1.0, cli_1.1.0, codetools_0.2-16, colorspace_1.4-1, crayon_1.3.4, crosstalk_1.0.0, curl_3.3, data.table_1.12.2, DiagrammeR_1.0.1, DiagrammeRsvg_0.1, digest_0.6.20, downloader_0.4, dplyr_0.8.3, DT_0.7, emo_0.0.0.9000, evaluate_0.14, forcats_0.4.0, generics_0.0.2, ggdendro_0.1-20, ggformula_0.9.1, ggplot2_3.2.0, ggrepel_0.8.1, ggstance_0.3.2, glue_1.3.1.9000, gridExtra_2.3, gtable_0.3.0, haven_2.1.1, here_0.1, highr_0.8, hms_0.5.0, htmltools_0.3.6, htmlwidgets_1.3, httpuv_1.5.1, httr_1.4.0, icon_0.1.0, igraph_1.2.4.1, influenceR_0.1.0, jsonlite_1.6, knitr_1.23, later_0.8.0, lattice_0.20-38, lazyeval_0.2.2, leaflet_2.0.2, lubridate_1.7.4, magrittr_1.5, MASS_7.3-51.4, Matrix_1.2-17, mime_0.7, modelr_0.1.4, mosaic_1.5.0.9001, mosaicCore_0.6.0, mosaicData_0.17.0, munsell_0.5.0, nlme_3.1-140, pillar_1.4.2, pkgconfig_2.0.2, plotly_4.9.0, plyr_1.8.4, promises_1.0.1, purrr_0.3.2, R6_2.4.0, RColorBrewer_1.1-2, Rcpp_1.0.1, readr_1.3.1, readxl_1.3.1, RefManageR_1.2.12, rgexf_0.15.3, rlang_0.4.0, rmarkdown_1.14, Rook_1.1-1, rprojroot_1.3-2, rstudioapi_0.10, rvest_0.3.4, scales_1.0.0, sessioninfo_1.1.1.9000, shiny_1.3.2, stringi_1.4.3, stringr_1.4.0, tibble_2.1.3, tidyr_0.8.3, tidyselect_0.2.5, tidyverse_1.2.1, V8_2.3, vctrs_0.2.0, viridis_0.5.1, viridisLite_0.3.0, visNetwork_2.0.7, widgetframe_0.3.1, withr_2.1.2, xaringan_0.11, xaringanthemer_0.2.0, xfun_0.8, XML_3.98-1.20, xml2_1.2.0, xtable_1.8-4, yaml_2.2.0, zeallot_0.1.0
  • Last update 2019-09-16 09:55:13
107 / 107
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow