Select Git revision
restart.conf
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
sheet_team.typ 2.53 KiB
#import "sheet_template.typ": *
#import "global.typ": *
#let title = "Aufgabenblatt: Kollaborative Git Nutzung"
#show: doc => apply-template(title, "de", doc)
= Pointers
```
* bad8c60 (HEAD -> main, tag: v1.0) Merge branch 'fix-critical-bug'
|\
| * aff0f18 (fix-critical-bug) F
* | 17caabd C
|/
* f86e534 (tag: rc1) B
| * 913336d (tmp) E
| * 6c96e08 D
|/
* bd7207d A
```
#task[
#set enum(numbering: "a)")
Der Befehl `git gc` entfernt, ähnlich dem Java Garbage-Collector,
alle Commits und Objekte die nicht mehr direkt oder indirekt referenziert werden.
Betrachte den folgenden Git-Graphen.
Welche Commits werden bei den folgenden Befehlen gelöscht, wenn anschließend `git gc` aufgerufen wird?
+ `git branch --delete tmp`
+ `git branch --delete fix-critical-bug`
+ `git reset --hard aff0f18`
+ `git reset --hard rc1 && git tag --delete v1.0`
+ `git tag --delete rc1`
+ `git checkout tmp && git reset --hard 6c96e08`
+ `git checkout tmp && git reset --hard aff0f18 && git branch --delete fix-critical-bug`
]
= Addresssing
```
* bad8c60 (HEAD -> main, tag: v1.0) Merge branch 'fix-critical-bug'
|\
| * aff0f18 (fix-critical-bug) F
* | 17caabd C
|/
* f86e534 (tag: rc1) B
|\
| * 913336d (tmp) E
| * 6c96e08 D
* | 5bcdda8 A2
|/
* bd7207d A
```
#task[
#set enum(numbering: "a)")
Betrachte den folgenden Git-Graphen.
Welche Commits werden mit den folgenden Aliasen bezeichnet?
+ `HEAD`
+ `HEAD~`
+ `rc1~`
+ `HEAD~2`
+ `HEAD^`
+ `HEAD^2`
+ `HEAD~^^2`
]
#question[
Für welche Situation wäre die folgende Ausgabe korrekt?
```
* f86e534 (tag: rc1) B
|\
| * 913336d (tmp) E
| * 6c96e08 D
|/
* bd7207d A
```
]
= RWTH-Gitlab
Zum Teilen von Git-Repositories hosted die RWTH die Platform GitLab.
Auf der Login-Seite der #link("https://git.rwth-aachen.de/users/sign_in")[GitLab-Instanz] gibt es die Option "DFN-AAI Single-Sign-On" über die du dich mit deinen RWTH Zugangsdaten einloggen kannst.
#task[
Bilde mit deinem Nachbarn ein Team.
Einer von euch erstellt ein neues Projekt und lädt den anderen ein.
Ihr findet die Übersicht über die Mitglieder eures Projekts in #path(("Manage", "Members")).
Dort gibt es den Button `Invite Members`.
Euer Team benötigt mindestens die Rolle `Developer`.
]
#task[
+ Klont das Repository auf euren Laptop.
+ Erstellt beide euren eigenen Branch mit `git checkout -b <branch-name>`.
+ Erstellt unterscheidliche Commits mit unterschiedlichen Dateien.
+ Pusht eure Branches in das Repository.
+ Merged eure Commits nacheinander in den `main`-Branch.
]
= Merge-Konflikte