HTML-Folien können durch tippen von e
in PDF umgewandelt werden, und dann mit Drucken aus dem Browser abgespeichert werden, falls ihr darin kommentieren wollt.
Roadmap
Vor Git: Rechner stürzt ab.
Mit Git: Alles liegt online.
final-v10_commented_NH_03.docx
weiterarbeiten.Beim Hin-und Herschicken von Skripten, Texten etc. kommt eventuell mal etwas durcheinander. Und wenn man parallel an einem Skript arbeiten will wird es sehr abspracheintensiv …
Science
Ansonsten Windows Powershell/Linux Terminal öffnen, Pfad setzen (z.B. cd C:\Users\hafiznij\Documents\GitHub\IQB-Methods
) und dann von dort aus arbeiten.
Tools - Global Options
Diese Integration macht am meisten in der Verbindung mit einem RStudio-Projekt Sinn.
Erste Schritte.
Einmalig, in einem Terminal (z.B. das in RStudio, oder Windows Powershell):
git config --global user.name 'Your Name'
git config --global user.email 'your@email.com'
Übung
Tu das bitte einmal für deinen GitHub-Username und deine GitHub-email. Checke dann noch einmal ob das geklappt hat:
git config --global user.name
git config --global user.email
Übung
Erstelle dein erstes eigenes Repository.
git clone url
“Herunterladen” des Repositories auf den eigenen Rechner.
In RStudio:
New Project - Version Control - Git
Das hat den Vorteil, dass direkt ein RStudio-Projekt und eine R-spezifische .gitignore
Datei erstellt wird.
Übung
Clone das gerade erstellte Repository. Wenn du nicht RStudio dafür nutzt, erstelle außerdem ein RStudio-Projekt in dem geklonten Ordner (File - New Project - Existing Directory
), sowie eine .gitignore
Datei mit folgendem Inhalt:
.Rproj.user
.Rhistory
.RData
.Ruserdata
Wichtig
Arbeiten auf Netzlaufwerk kann zu Problemen mit Git führen! Deswegen wirklich immer lokal auf dem eigenen Rechner arbeiten.
Exkurs: Fork
Repository online kopieren. An diesem kann weitergearbeitet werden, als ob es ein eigenes Repository wäre.
Änderungen im Repository werden lokal auf dem eigenen Rechner vorgenommen.
Übung
Erstelle eine .txt Datei in deinem lokalen Repository-Ordner. Schreibe in die Datei Hello World!
und speichere sie ab.
git add filename
git add .
Auswählen der Datein, die zum Commit hinzugefügt werden sollen.
Übung
Stage deine gerade bearbeitete Datei, sowie das erstellte RStudio-Projekt und die .gitignore
Datei. Ganz sauber wäre es, erst einmal nur die .txt
Datei zu stagen, und dann die anderen Datein, um daraus insgesamt zwei Commits zu machen.
git commit -m "useful commit message"
Speichern der Änderungen, mit kurzer Beschreibung was gemacht wurde (Commit Message).
Übung
Committe deine gerade gestagte Datei mit einer kurzen, prägnanten Commit Message. Wenn du Zwei Commits daraus machen willst, committe erst nur die gestagte .txt
Datei, und stage und committe danach die anderen Datein.
git push
Hochladen der Commits in das Online-Repository.
Übung
Pushe deinen Commits. Schaue dann im Online-Repository nach, ob die geänderte Datei dort auch erscheint.
git pull
Damit laden wir die neuesten Änderungen aus dem Online-Repository herunter. Vor allem beim kollaborativen Arbeiten sollte das gemacht werden, bevor man mit der eigenen Arbeit beginnt.
Die .gitignore
Datei wird im Repository-Ordner erstellt und enthält Datein, die nicht getrackt werden sollen (z.B. große Datensätze, Hilfsdatein …).
.Rproj.user
.Rhistory
.RData
.Ruserdata
Tipp
Nach Möglichkeit wollen wir vor allem die plain-Text Datein tracken. Wenn wir z.B. mit Quarto arbeiten, wollen wir die .qmd
Datein tracken, aber nicht unbedingt die .html
Datein, die darus erzeugt werden.
Kollaboratives Arbeiten
git checkout -b new_branch
Hinweis
Vergiss nicht, vor der Erstellung zu pullen, damit die neuste Projekt-Version für Branch genutzt wird.
Wenn eine Person als Reviewer angefragt wurde, sollte man mit dem Mergen warten, bis das Review abgeschlossen ist.
Die verlangten Änderungen können direkt auf dem Branch, auf dem die Pull-Request erstellt wurde, vorgenommen werden. Dann committet und pusht man ganz normal, und die Pull-Request wird automatisch geupdated.
Alternativ kann man einen neuen Branch my_branch_2
vom aktuellen Branch my_branch_1
abzweigen:
git checkout -b my_branch_2 my_branch_1
… und dann eine neue Pull-Request erstellen.
Jeder Issue und jede Pull-Request hat eine ID. Diese kann genutzt werden, um alles untereinander zu verlinken. Z.B. können Issue-IDs in Commit-Messages vermerkt werden, um automatisch Issues zu schließen:
closes #34
Das ist einfach der Prozess, wenn ein Branch in einen anderen überführt wird. Meistens wird das nach einer angenommenen Pull-Request gemacht, geht aber auch völlig ohne.
main
, oder von main
pullen und dann in den eigenen Branch mergen:git checkout my_branch # wechseln auf eigenen branch
git fetch origin # lokal updaten
git merge origin/main # mergen von main in eigenen branch
Übung
Einige dich mit der Person neben dir, wer wen zum zu Beginn erstellten Repository einlädt. Tut das dann, sodass ihr eines eurer Repositories zu zweit oder zu dritt bearbeiten könnt.
Tipp
Gehe oben in der Kopfzeile des Repos auf Settings
und dann in der Seitenleiste links auf Collaborators and teams
. Hier kannst du jetzt den GitHub-Username einer Person zum Repository hinzufügen.
Übung
Clone das Repository (wenn noch nicht geschehen).
Übung 1
Erstellt euch gegenseitig einen Issue, den die andere Person dann bearbeiten soll. Das kann so etwas sein wie “Add two numbers” o.ä. Wichtig ist, dass aus der Beschreibung klar wird, was getan werden soll. Assignt die andere Person zu diesem Issue.
Übung 2
Erstelle einen eigenen Branch, auf dem du den dir zugewiesenen Issue in der nächsten Übung bearbeiten wirst.
Übung 1
Bearbeite jetzt den dir assignten Issue ersteinmal in einer neuen R-Datei. Erstellt euch also eine neue R-Datei im Repository Ordner und löst den Issue darin.
Übung
Erstelle eine Pull-Request, und wähle die andere Person als Reviewer.
Übung 2
Arbeite die Änderung, die von dir verlangt wurde, ein und pushe erneut. Nutze dafür einfach den selben Branch, den du vorher für deine Pull-Request verwendet hast. Dadurch wird sie automatisch geupdated. Verlange ein erneutes Review.
Übung 3
Reviewe die Pull-Request der anderen Person erneut. Approve diesmal.
Übung 1
Merge deine Pull-Request.
Übung 2
Mist! Dein Reviewer meldet dir zurück, dass es einen Fehler beim Review gab, und das Review bitte rückgängig gemacht werden soll.
Browse das Repository zu dem Commit, der vor dem ersten Review deiner Datei gemacht wurde und schaue in deiner R-Datei nach, was davor drin stand. Theoretisch ließe sich das auch alles über Git-Befehle wiederherstellen, das Browsen reicht uns jetzt aber erst einmal für diese Übung.
Resolve conflicts
.<<<<<<<
, =======
und >>>>>>>
markiert. Wir können uns entscheiden, welche Änderungen wir behalten wollen.Mark as resolved
.main
, oder ein development
-Branch), damit die einzelnen Branches nicht zu sehr divergieren.Übung 1
Pullt die Änderungen von main
, damit ihr beide auf dem aktuellen Stand seid. Erstellt dann jeweils einen neuen Branch, auf dem ihr jetzt in der gleichen Datei in der gleichen Zeile Änderungen vornehmt. Das wird hoffentlich einen Merge-Conflict erzeugen.
Wenn ihr wollt, könnt ihr danach nochmal tauschen, sodass die andere Person den Merge-Conflict lösen muss.
Wichtig
Denkt daran, dass alles was ihr in GitHub hochladet, auch im Internet landet. Zwar kann man Repositories auf privat stellen, aber Daten oder ähnliches, wie konkrete BT-Ergebnisse oder -Kapitel, die noch nicht veröffentlich wurden, sollte eher auf den Laufwerken belassen.
Main
in den eigenen Branch reinmergen, falls man da länger drauf arbeitet. Das erspart später ausufernede Merge-Conflicts.Wendet Git am besten mal auf ein passendes eigenes Projekt an, noch sicherer im Umgang damit zu werden. Es lohnt sich!