Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add new module "Git Vertiefung" and update folder structure for git #155

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
58 changes: 8 additions & 50 deletions content/en/docs/git/_index.md
Original file line number Diff line number Diff line change
@@ -1,55 +1,13 @@
---
title: "Git"
weight: 3
sectionnumber: 1
date: 2021-10-28
description: Verteilte Versionsverwaltung mit Git
weight: 2
description: >
Arbeiten mit Git
---

Hallo Ninja!
## Inhalt

Es freut uns das du **git** kennenlernen willst!

Wir haben hier ein Lab für dich zusammengestellt damit du in dieses Thema eintauchen kannst. Finde für dich heraus, warum **git** eine Zeitmaschine ist und was es mit den Paralleluniversen auf sich hat.

# Ziele

Du kannst ...

- git konfigurieren
- Repositories auschecken
- Branches erstellen und auschecken
- Commits erstellen und Commit Messages nach gegebenen Richtlinien formulieren
- Änderungen vom Server pullen
- Merge-/Pullrequests erstellen (z.B. auf Github, Bitbucket, Gitlab)
- Änderungen anhand der Git History nachvollziehen
- Branches mergen und rebasen

Vielleicht sogar ...

- Commits squashen
- Tags erstellen und pushen
- Aliasse einrichten
- Blame anwenden

## Schwerpunkte

Dieses Lab unterteilt sich in folgende Themenbereiche:

- [Was ist dieses Git?](was-ist-git)
- [Git installieren](git-install)
- [Git Basics](git-basics)
- [Git Branches](git-branches)
- [GitHub](git-hub)
- [Bitbucket](bitbucket)
- [Git Erweitert](git-extended)

Nachdem du die Docs gelesen hast, solltest du in der Lage sein die [Labs](../../../../labs/git/) zu lösen.

## Let's play!

Meisterst du diese Challenges?

- [oh my git!](https://ohmygit.org/)
- [learn git branching](https://learngitbranching.js.org/)
- [git immersion](https://gitimmersion.com)
Dieser Bereich ermöglicht dir das Versionskontrollsystem `git` kennenzulernen. Du lernst die Aufgaben
von Git kennen, erlernst die Anwendung der Git-Befehle auf der Kommandozeile und deren Entsprechung
in IDEA IntelliJ. In einem zweiten, fakultativen Modul erlernst du, wie Git für die Zusammenarbeit in
einem Team genutzt werden kann.
55 changes: 55 additions & 0 deletions content/en/docs/git/basics/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: "Git Grundwissen"
weight: 3
sectionnumber: 1
date: 2021-10-28
description: Verteilte Versionsverwaltung mit Git
---

Hallo Ninja!

Es freut uns das du **git** kennenlernen willst!
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Es freut uns das du **git** kennenlernen willst!
Es freut uns, dass du **git** kennenlernen willst!


Wir haben hier ein Lab für dich zusammengestellt damit du in dieses Thema eintauchen kannst. Finde für dich heraus, warum **git** eine Zeitmaschine ist und was es mit den Paralleluniversen auf sich hat.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Wir haben hier ein Lab für dich zusammengestellt damit du in dieses Thema eintauchen kannst. Finde für dich heraus, warum **git** eine Zeitmaschine ist und was es mit den Paralleluniversen auf sich hat.
Wir haben hier ein Lab für dich zusammengestellt, damit du in dieses Thema eintauchen kannst. Finde für dich heraus, warum **git** eine Zeitmaschine ist und was es mit den Paralleluniversen auf sich hat.


# Ziele

Du kannst ...

- git konfigurieren
- Repositories auschecken
- Branches erstellen und auschecken
- Commits erstellen und Commit Messages nach gegebenen Richtlinien formulieren
- Änderungen vom Server pullen
- Merge-/Pullrequests erstellen (z.B. auf Github, Bitbucket, Gitlab)
- Änderungen anhand der Git History nachvollziehen
- Branches mergen und rebasen

Vielleicht sogar ...

- Commits squashen
- Tags erstellen und pushen
- Aliasse einrichten
- Blame anwenden

## Schwerpunkte

Dieses Lab unterteilt sich in folgende Themenbereiche:

- [Was ist dieses Git?](was-ist-git.md)
- [Git installieren](git-install)
- [Git Basics](git-basics.md)
- [Git Branches](git-branches.md)
- [GitHub](git-hub.md)
- [Bitbucket](bitbucket.md)
- [Git Erweitert](git-extended.md)

Nachdem du die Docs gelesen hast, solltest du in der Lage sein die [Labs](../../../../labs/git/) zu lösen.

## Let's play!

Meisterst du diese Challenges?

- [oh my git!](https://ohmygit.org/)
- [learn git branching](https://learngitbranching.js.org/)
- [git immersion](https://gitimmersion.com)
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ linkTitle: "SSH-Key in Git"
weight: 8
---

Du findest die Anleitung zur Einrichtung eines SSH-Keys [hier.](../tools/personal_bitbucket_repo/)
Du findest die Anleitung zur Einrichtung eines SSH-Keys [hier.](../../tools/personal_bitbucket_repo/)

---

![task1](/images/task.png) Jetzt bist du dran. Löse bitte die [Git Hands On Aufgabe](../../../../labs/git/01_git/) in den Labs.
![task1](/images/task.png) Jetzt bist du dran. Löse bitte die [Git Hands On Aufgabe](../../../../labs/git/basics/01_git/) in den Labs.
59 changes: 59 additions & 0 deletions content/en/docs/git/vertiefung/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
title: "Git Vertiefung"
linkTitle: "Git Vertiefung"
sectionnumber: 2
date: 2024-10-16
description: Gemeinsame Nutzung von Git in einem Team
weight: 5
---

Hallo Ninja!

Nachdem du Git und Bitbucket bereits kennengelernt und etwas über die wichtigsten Kommandos gelernt hast,
erhältst du hier die Möglichkeit dein Wissen zu Git und Bitbucket zu vertiefen.

Dieses Modul ist fakultativ und gehört nicht zum normalen Ausbildungsplan. Es wird kein komplett neues Wissen vermittelt,
sondern nur das bereits erlernte in einer realistischen Team-Umgebung angewandt. Dazu ist es erforderlich, dass das Modul
von mindestens zwei Lernenden (mehr ist besser) gemeinsam bearbeitet wird.

## Ziele

Du kannst ...

- in einem Team an mehreren gemeinsamen Projekten arbeiten.
- die lokalen Versionsstände mit den den Änderungen der Anderen zusammenführen.
- zwischen Projekten wechseln, ohne deine Änderungen zu verlieren.
- alle Git-Aktionen auch über IntelliJ ausführen.
- Peer-Reviews durchführen.

Dazu wirst du bereits bekannte Themen wiederholen und ...

- ein existierendes Repository klonen
- ein neues Repository erstellen
- ein Repository in den Arbeitsbereich holen
- Branches anlegen und mergen
- erkennen, ob ein Branch bereits gemergt wurde
- Dateien und Verzeichnisse zu einem Repository hinzufügen
- Dateien und Verzeichnisse von der Versionsverwaltung ausschliessen
- die Weboberfläche von Bitbucket bedienen
Copy link
Collaborator

@jFriedli jFriedli Nov 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- ein existierendes Repository klonen
- ein neues Repository erstellen
- ein Repository in den Arbeitsbereich holen
- Branches anlegen und mergen
- erkennen, ob ein Branch bereits gemergt wurde
- Dateien und Verzeichnisse zu einem Repository hinzufügen
- Dateien und Verzeichnisse von der Versionsverwaltung ausschliessen
- die Weboberfläche von Bitbucket bedienen
- ein existierendes Repository klonen.
- ein neues Repository erstellen.
- ein Repository in den Arbeitsbereich holen.
- Branches anlegen und mergen.
- erkennen, ob ein Branch bereits gemergt wurde.
- Dateien und Verzeichnisse zu einem Repository hinzufügen.
- Dateien und Verzeichnisse von der Versionsverwaltung ausschliessen.
- die Weboberfläche von Bitbucket bedienen.


## Schwerpunkte

Das Lab ist in die folgende Aufgabenbereiche unterteilt:

- [Voraussetzungen schaffen (Team bilden)](preliminaries)
- [Zusammenarbeit in einem Projekt](collaboration)
- [Paralleles Arbeiten mit mehreren Repositories](parallel-processing)

## Hinweise

- Zu diesem fakultativen Modul gibt es kein Exam.
- Um dieses Modul erfolgreich zu bearbeiten ist Teamarbeit erforderlich.
- Die geplante Bearbeitungszeit liegt bei 1 - 2 Tagen.

#### Hinweise zum Review

- Das Review zum Modul wird mit dem gesamten Team geführt.
- Das Team erläutert das Vorgehen und schildert auch aufgetretene Probleme.
- Ein Beispiel-Projekt soll im Vorfeld zu einem releasefähigen Stand gebracht worden sein, der die Änderungen aller Teammitglieder beinhaltet.
- Ein weiteres Beispielprojekt befindet sich noch in der Entwicklung.
125 changes: 125 additions & 0 deletions content/en/docs/git/vertiefung/collaboration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
---
title: "Zusammenarbeit im Projekt"
linkTitle: "Zusammenarbeit im Projekt"
weight: 3
---

## Voraussetzungen

Die Vorbereitungen aus [Aufgabe 1](../../../labs/git/vertiefung/01_team) sind umgesetzt. Insbesondere sind erledigt:

- Zwei neue Repositories mit vorhandenen Projekten wurden erstellt.
- Es sind jeweils die Branches `master` und `develop` vorhanden.
- Alle Teammember haben diese Repositories geklont.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Alle Teammember haben diese Repositories geklont.
- Alle Team-Mitglieder haben diese Repositories geklont.


## Simulieren einer realen Projektarbeit

Ein realistisches Szenario beinhaltet die konkurrierende Arbeit mehrerer Team-Mitglieder auf demselben
Repository, die Arbeit mit mehreren Projekten und die Notwendigkeit schnell zwischen den Projekten und
einzelnen Versionsständen wechseln zu können.

Im ersten Abschnitt wird die Zusammenarbeit an einem Projekt simuliert, um die Kenntnisse zum Anlegen,
Aktualisieren,Vergleichen und Mergen von Branches aufzufrischen. Hierzu werden die Git Befehle

- **branch**,
- **checkout**,
- **push**,
- **diff**,
- **branch -merged**,
- **merge**,
- **rebase**

verwendet/wiederholt. In den Labs zu diesem Modul werden die Git-Aktionen hauptsächlich innerhalb
von IntelliJ oder über die Weboberfläche von Bitbucket ausgeführt, da dies das in den Projekten
übliche Vorgehen ist.

### Bitbucket

#### Hauptansicht

Die Standardanzeige von Bitbucket ist die Auflistung der vorhandenen Branches. Wichtige Elemente auf
der Bitbucket Weboberfläche, die in diesem Modul benutzt werden, sind durch rote Markierungen hervorgehoben.

![Bitbucket Mainview](../images/bitbucket-main.jpg)

Ein Pull Request kann durch einen Klick auf den Branch in der Branch-Übersicht oder auf der
Übersichtsseite der Pull Requests über den Button `Pull-Anfrage erstellen` (oben rechts) erstellt werden.
(_siehe nächstes Bild_)

#### Pull Request

**Übersicht aller Pull Requests.** Hier werden alle im Repository erstellt Pull Requests aufgelistet.
Dabei kann ausgewählt werden, ob nur die offenen Pull Requests (_Standardeinstellung_), die zusammengeführten,
abgelehnten oder alle Pull Requests angezeigt werden sollen.

![Bitbucket Pull Requests](../images/bitbucket-pr-overview.jpg)

Wird ein neuer Pull Request erstellt, sind Ausgangs- und Zielbranch bereits vorbelegt. Beide können
geändert oder auch die Richtung der Zusammenführung umgekehrt werden.
Bei der Erstellung eines neuen Pull Request ist besonders darauf zu achten, dass der richtige Zielbranch
(rote Markierung) ausgewählt ist. Für die Übungen in diesem Modul wird das immer `develop` sein.

![Bitbucket Pull Request erstellen](../images/bitbucket-create-pr.jpg)

Will man einen Pull Request überprüfen, so gibt es verschiedene Informationen und Aktionen, die dabei
helfen können.

1. Fügt den aktuellen User als Prüfer hinzu.
2. Zeigt die Aktionen an die erforderlich sind, bevor der Pull Request gemergt werden kann. Dazu gehören neben den erforderlichen Freigaben durch den/die Prüfer, auch erfoderliche Builds und eventuell zu lösende Konflikte.
3. Startet die Überprüfung (nur nötig, wenn eine Protokollierung gefordert ist).

Ausserdem werden die Kommentare des Erstellers und anderer Prüfer in der _Übersicht_ angezeigt. _Diff_
führt die Unterschiede zwischen Ausgangs- und Zielbranch auf. Dabei werden entfernte Zeilen rot und
hinzugefügte Zeilen grün hinterlegt. Jede Änderung an einer Zeile, und sei es auch nur ein einzelnes
Zeichen, wird immer als Entfernen der alten Zeile und Einfügen der neuen Zeile dargestellt.
Alle zu diesem Pull Request gehörenden _Commits_ und auch alle _Builds_ können einzeln angeschaut werden.

![Bitbucket Pull Request prüfen](../images/bitbucket-approve-pr.jpg)

### IDEA IntelliJ

Einige der Git-Befehle werden auch in IntelliJ ausgeführt. Die in den Labs verwendeten Menueinträge
sind farbig markiert.

![IDEA IntelliJ Git Menu](../images/intellij-git-menu.jpg)

Will man die Änderungen vom Arbeitsbereich in das Repository übertragen, wird `git commit` verwendet.
In IntelliJ kann dazu der Menu-Eintrag _Commit..._ oder auch _Push_ aus dem Kontextmenu des Projekts
aufgerufen werden. Die Ansicht wechselt nun auf die Commit-View:

![IDEA IntelliJ Commit View](../images/intellij-commit.jpg)

1. Anzeige der geänderten Dateien; hier können einzelne oder alle Dateien ausgewählt werden, die bei Ausführung von commit im Repository aktualisiert werden.
2. Die Commit-Message ist erforderlich und beschreibt die übertragenen Änderungen in Kurzfassung.
3. Mit dem Button `Commit` werden die Änderungen in das lokale Repository übernommen, mit `Commit and Push..` werden sie anschliessend auch auf das remote Repository übertragen, wo sie dann allen zugänglich sind.

### Collaboration

In der Praxis ist es üblich, dass in grossen Projekten mehrere Entwickler an der gleichen Codebasis
arbeiten, aber für unterschiedliche fachliche Features zuständig sind. Diese Änderungen müssen regelmässig
zusammengeführt werden, damit alle Entwickler auf dem aktuellen Stand arbeiten können. Dabei kommt es
immer wieder auch vor, dass Änderungen an einer Klasse in unterschiedlichen Branches zusammen geführt
werden müssen. Im Regelfall erledigt Git diese Zusammenführung (_merge_) automatisch. Wenn jedoch Konflikte
auftreten, d.h. eine Zeile in beiden Branches, die zusammengeführt werden sollen, geändert wurde, kann
Git nicht entscheiden, welches die "richtige" Version ist. Hier muss der Entwickler entscheiden.

Dieses Szenario kann leicht nachgestellt werden, indem mehrere Team-Mitglieder einen Feature-Branch
von develop erstellen und auf diesem arbeiten.

In einer ersten Aufgabe sollen kleine Änderungen ohne Merge-Konflikte vorgenommen und zusammegeführt
werden. Dazu werden in den Feature-Branches unterschiediche Dateien bzw. Codestellen bearbeitet und
anschliessend auf `develop` zusammengeführt.

Der zweite Teil stellt Merge-Konflikte und deren Auflösung durch den Entwickler nach. Hier sollen
jeweils mehrere kleine Änderungen am Code vorgenommen werden. Dabei wird mindestens eine Zeile einer
bestimmten Datei von allen beteiligten Entwicklern geändert. Die Änderungen werden auf den Feature-Branch
gepusht und dann nacheinander auf `develop` zusammengeführt. Jetzt sollte es zu merge-Konflikten kommen,
die es zu lösen gilt.

Die passenden Aufgaben sind in den Labs unter

- [Vorbereiten der IDE](../../../labs/git/vertiefung/02_preparing)
- [Gemeinsames Arbeiten an einem Projekt (ohne Konflikte)](../../../labs/git/vertiefung/03_collaboration)
- und [Gemeinsames Arbeitane an einem Projekt (mit Merge-Konflikten)](../../../labs/git/vertiefung/04_merge-conflict)

zu finden.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
55 changes: 55 additions & 0 deletions content/en/docs/git/vertiefung/parallel-processing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: "Mit mehreren Repositories arbeiten"
linkTitle: "Mit mehreren Repositories arbeiten"
weight: 4
---

## Voraussetzungen

Die Vorbereitungen aus [Aufgabe 1](../../../labs/git/vertiefung/01_team) sind umgesetzt. Insbesondere sind erledigt:

- zwei neue Repositories mit vorhandenen Projekten wurden erstellt
- es sind jeweils die Branches `master` und `develop` vorhanden
- alle Teammember haben diese Repositories geklont
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- zwei neue Repositories mit vorhandenen Projekten wurden erstellt
- es sind jeweils die Branches `master` und `develop` vorhanden
- alle Teammember haben diese Repositories geklont
- zwei neue Repositories mit vorhandenen Projekten wurden erstellt.
- es sind jeweils die Branches `master` und `develop` vorhanden.
- alle Team-Mitglieder haben diese Repositories geklont.


## Simulieren einer realen Projektarbeit

Ein realistisches Szenario beinhaltet die konkurrierende Arbeit mehrerer Team-Mitglieder auf demselben
Repository, die Arbeit mit mehreren Projekten und die Notwendigkeit schnell zwischen den Projekten und
einzelnen Versionsständen wechseln zu können.

Im zweiten Abschnitt wird die parallele Arbeit mit mehreren Projekten bzw. Repositories simuliert.
Hier sollen die Kenntnisse zu den nachfolgenden Git Befehlen aufgefrischt werden.

- **branch**
- **checkout**
- **stash**
- **pull**
- **push**

In den Labs zu diesem Modul werden die Git-Aktionen hauptsächlich innerhalb von IntelliJ oder über
die Weboberfläche von Bitbucket ausgeführt, da dies das in den Projekten übliche Vorgehen ist.

## Arbeit mit mehreren Repositories

In diesem Abschnitt werdet ihr mit den gleichen Menueinträgen arbeiten, wie im vorigen. Wenn ihr nicht
sicher seid, welche das sind, schaut einfach noch einmal auf der vorigen Seite nach.

Nach Abschluss der Aufgaben solltet ihr in der Lage sein, zwischen unterschiedlichen Projekten und zwischen
verschiedenen Versionsständen eines Projektes zu wechseln ohne, dass eure lokalen Änderungen verloren gehen.

Wir werden in diesem Abschnitt mit beiden Projekten arbeiten, wobei auf nur dem zweiten Projekt
geändert wird. In einer ersten Aufgabe wird die parallele Arbeit an mehreren Projekten demonstriert.
Dabei werden die beiden möglichen Arbeitsweisen vorgestellt.

Die zweite Aufgabe thematisiert den Wechsel zwischen Branches oder Commits des gleichen Projekts.
Kleinere Änderungen werden auf mehrere Commits verteilt. Anschliessend wird zwischen diesen Commits
gewechselt, korrigiert, erneut committed oder mit stash zwischengespeichert.

Nach den Übungen könnt ihr zwischen Projekten oder zwischen verschiedenen Branches desselben Projekts
wechseln, wisst, wann stash eingesetzt wird und seid mit checkout, rebase, push und pull vertraut.

Zu den Labs:

- [Simultanes Arbeiten an mehreren Projekten](../../../labs/git/vertiefung/05_project-switch)
- [Wechseln zwischen Branches desselben Projekts](../../../labs/git/vertiefung/06_branch-switch)
Loading