Ziel: Kennenlernen der Zusammenarbeit im Team mit Hilfe von Git an einem gemeinsamen Repository auf GitHub
Praktikumsaufgaben Teil 3 - Zusammenarbeit 1
Für die Bearbeitung der Aufgaben bilden Sie bitte Teams aus drei Personen. Entscheiden Sie, wer aus Ihrem Team der Verantwortliche für das Git-Repository ist.
-
Bilden Sie mit Ihren Kommilitonen Teams aus 2 bis 3 Personen.
-
Sind Sie nur zu zweit, teilen Sie sich in die Aufgaben für Person C rein.
-
Es empfiehlt sich für eine geeignete Kommunikation (Video-, Sprach- oder Textchat) in Ihrem Team zu sorgen. Einige Aufgaben sind so ausgelegt, dass Sie erst auf das Bearbeiten der anderen Teammitglieder warten oder sich absprechen müssen.
-
Person A … Mitglied im Team, Verantwortliche des Git-Repositories
-
Person B, C … Mitglied im Team
Aufgrund der nicht gespeicherten Nutzer-Profile in den Windows-Laboren, sind zu jedem Praktikumsbeginn folgende Schritte durchzuführen:
Schritte zur Vorbereitung des Praktikums
-
Git-Konfiguration
C:\Users\<username>\.gitconfig
wiederherstellen oder anpassen:per Editor in der .gitconfig[user] name = Vorname Nachname email = s00000@htw-dresden.de [safe] directory = * [http] proxy = http://www-cache.htw-dresden.de:3128
oder per PowerShell und Git-Kommandos> git config --global user.name "Vorname Nachname" > git config --global user.email s00000@informatik.htw-dresden.de > git config --global --add safe.directory * > git config --global http.proxy http://www-cache.htw-dresden.de:3128
-
Visual Studio Code: Anpassen der AsciiDoc-Einstellungen:
-
Asciidoc > Preview: Use Editor Style: (deaktiviert)
-
Asciidoc > Extensions: Enable Kroki: (aktiviert)
-
-
GitHub Login mit gespeichertem oder neuem Personal Access Token über die PowerShell bekanntgeben:
Repository vorhanden> U: > cd path/to/repository/<repo-name>/ > git pull Authentifizierung ...
Repository nicht vorhanden (Home-/SAMBA-Laufwerk)> U: > cd path/to/repository/ > git clone https://github.com/.../<repo-name> Authentifizierung ...
Repository nicht vorhanden (TEMP-Laufwerk)> T: > git clone https://github.com/.../<repo-name> Authentifizierung ...
1. Einrichtung des Teams
Aufgabe 1.1 - Repository erstellen
Erstellen Sie in Ihrem GitHub-Account ein neues privates Repository htwd-se-example-teamproject mit folgenden Einstellungen:
-
Repository name:
htwd-se-example-teamproject
-
Description:
Beispielteamprojekt für die Praktikumsaufgaben zum Thema Git und AsciiDoc
-
Initialize this repository with a README:
Ja
Aufgabe 1.2 - Mitglieder hinzufügen
Fügen Sie Ihrem Repository htwd-se-example-teamproject über die Einstellungen
ihre Teammitglieder über den Account-Namen oder die E-Mail hinzu.Alle Mitlgieder haben Schreibrechte und können gleichberechtigt Änderungen am Repository vornehmen. Siehe auch Permission levels for a user account repository. |
Schauen Sie in Ihr Mail-Postfach und nehmen Sie die Einladung zum htwd-se-example-teamproject an. Öffnen Sie anschließend das Team-Repository auf GitHub von Person A.
Damit der Einladungslink funktioniert, müssen Sie im Webbrowser schon bei GitHub angemeldet sein. |
Aufgabe 1.3 - lokale Git-Konfiguration prüfen
Prüfen Sie mit git config --list
Ihre lokale Git-Konfiguration, ob Ihr Name und Ihre E-Mail korrekt gesetzt sind. Sollte dies nicht der Fall sein, passen Sie sie laut Teil 1: Aufgabe 2.1 - Konfiguration an.
2. Bearbeiten des Projektes
Beim Bearbeiten Ihres Projektes im Team kann es an verschiedenen Stellen zu Konflikten kommen. Dies betrifft unterschiedliche Versionsstände Ihrer Teammitglieder gegenüber dem entfernten Repository auf GitHub und Ihres lokalen Repositories. Die Konflikte bzw. Unterschiede lassen sich entweder automatisch zusammenführen (merge) oder erfordern ein manuelles Eingreifen.
Hinweis: push-Error Konflikte lösen
Beim Senden (push) der Änderungen des lokalen Repositories zum Remote-Repository kann es zu einem Konflikt bzw. Fehler kommen, wenn das Remote-Repository in der Zwischenzeit neuere Versionen (commits) erhalten hat.
In diesem Falle ist es notwendig sich die aktuell Version vom Remote-Repository über ein pull zu laden, was zwei Möglichkeiten eröffnet:
- Änderung an unterschiedlicher Stelle
-
-
Git kann Ihre lokalen Änderungen automatisch mit der neueren Version vom Remote-Repository zusammenführen (merge). Es wird automatisch ein neuer Commit vorbereitet (Message eingeben).
-
Anschließend können Sie mit einem wiederholten push die neu zusammengeführte Version an das Remote-Repository senden.
-
- Änderung an gleicher Stelle bzw. Überschneidung
-
Git kann Ihre lokalen Änderung nicht automatisch mit der neueren Version vom Remote-Repository zusammenführen (mergen). Die betreffenden Dateien beinhalten an den sich überschneidenden Zeilen beide Varianten. Oben die lokale und unten die entfernte Variante. Dies wird wie folgt markiert:
<<<<<<< HEAD Änderung 1 ======= Änderung 2 >>>>>>> feb62f7c8cb4201e4f7e2aede0b81c356c1cd31e
-
Lösen sie den Konflikt manuell, besprechen Sie sich hierzu ggf. im Team, durch ein Ersetzen bzw. Vereinen der Änderungen in den betreffenden Dateien. Entfernen Sie die durch Git hinzugefügten Markierung.
Alternativ entscheiden Sie sich für eine von beiden Versionen und ersetzen die lokale Version mit beiden Änderungen entweder mit Ihrer lokalen oder der entfernten Variante:
% git checkout --ours <file_name> (1) % git checkout --theirs <file_name> (2)
1 … Nimmt Ihre lokale Version 2 … Nimmt die Version vom remote-Repository -
Nehmen Sie Ihre neu bearbeiteten Änderungen (add und commit) in Ihr lokales Repository auf. Anschließend können Sie mit einem wiederholten push die neu zusammengeführte Version an das Remote-Repository senden.
-
Hinweis: pull-Error Konflikte lösen
Sie haben in Ihrem lokalen Repository noch nicht versionierte oder noch im INDEX vorgemerkte Änderungen, welche auf einer älteren Version als das Remote-Repository basieren.
- Variante 1 - lokale nicht versionierte Änderung erst in das Repository aufnehmen
-
-
Nehmen Sie Ihre lokale Änderung (add und commit) als Version in Ihr Repository auf.
-
Laden Sie sich mit pull die aktuelle Version vom Remote-Repository.
-
Git versucht den Konflikt automatisch zu lösen bzw. müssen Sie Ihn manuell auflösen (merge).
-
Nehmen Sie Ihre neu bearbeiteten Änderungen (add und commit) in Ihr lokales Repository auf. Anschließend können Sie mit push die neu zusammengeführte Version an das Remote-Repository senden.
-
- Variante 2 - lokale nicht versionierte Änderung verwerfen
-
-
Mit
git checkout .
werden alle Änderungen im WORKSPACE gegenüber Ihrer letzten lokalen Version verworfen. -
Anschließend können Sie mit pull die aktuelle Version des Remote-Repositories laden.
-
- Variante 3 - lokale nicht versionierte und vorgemerkte Änderung verwerfen
-
-
Mit
git reset --hard
werden alle Änderungen im INDEX und WORKSPACE gegenüber Ihrer letzten lokalen Version verworfen. -
Anschließend können Sie mit pull die aktuelle Version des Remote-Repositories laden.
-
- Weitere Varianten
-
-
Mit stash können Sie lokale noch nicht versionierte Änderungen temporär Zwischenspeichern und Ihren lokalen Stand auf die letzte Version Ihres lokalen Repositories zurücksetzen.
-
Aufgabe 2.1 - vorgegebene Reihenfolge
-
Erstellen Sie im lokalen Workspaces Ihres htwd-se-example-teamproject Repositories ein Verzeichnis docs und legen Sie in diesem eine neue Datei Teamdokumentation.adoc mit folgendem Inhalt in Visual Studio Code an:
Teamdokumentation.adoc= Teamdokumentation Vorname Nachname <email> 0.1, 01.09.2019 :toc: :toc-title: Inhaltsverzeichnis // Platzhalter für weitere Dokumenten-Attribute == Einführung Dieses Dokument dient im Praktikum als Spielwiese für das Kennenlernen und praktische Üben von AsciiDoc und Teamarbeit mit Git.
-
Speichern Sie und nehmen Sie Ihre Änderungen als neue Version in Ihr lokales Git-Repository und Ihr Team-Repository auf GitHub auf.
-
Aktualisieren Sie mit
Ihr lokales Repository mit dem Stand von entfernten Repository auf GitHub. -
Legen Sie in Ihrem Repository die neue Datei Teammitglieder.adoc im Verzeichnis docs mit folgendem Inhalt in Visual Studio Code an:
Teammitglieder.adoc== Teammitglieder
-
Speichern Sie und nehmen Sie Ihre Änderungen als neue Version in Ihr lokales Git-Repository und das Team-Repository auf GitHub auf.
-
Aktualisieren Sie mit
Ihr lokales Repository mit dem Stand von entfernten Repository auf GitHub. -
Legen Sie in Ihrem Repository die neue Datei Software.adoc im Verzeichnis docs mit folgendem Inhalt in Visual Studio Code an:
Software.adoc== Eingesetzte Software
-
Speichern Sie und nehmen Sie Ihre Änderungen als neue Version in Ihr lokales Git-Repository und das Team-Repository auf GitHub auf.
Aktualisieren (git pull) Sie alle im Team Ihr lokales Repository, damit Sie alle den gleichen lokalen Versionsstand wie Ihr gemeinsames Team-Repository auf GitHub haben.
htwd-se-example-teamproject ├── docs │ ├── Software.adoc │ ├── Teamdokumentation.adoc │ └── Teammitglieder.adoc └── README.md
Aufgabe 2.2 - freie Teamarbeit
Bearbeiten Sie im Team die folgenden Aufgaben und nehmen Sie die gemachten Änderungen jeweils in Ihr lokales und Ihr entferntes Teamrepository auf GitHub auf. Es ist keine bestimmt Reihenfolge vorgegeben, nur was wer tun soll. Diskutieren Sie Ihr Vorgehen und auftretende Problemen. Probieren Sie etwas und versuchen Sie aufgetretene merge-Konflikte zu lösen.
Mehrere Autoren werden in eine Zeile getrennt mit ; + Leerzeichen geschrieben. Besteht ein Autorenname aus mehr als drei Teilen, müssen die Vor- und Nachnamen mit _ jeweils zu einer Gruppe zusammengefasst werden.
|
-
Binden Sie in der Datei Teamdokumentation.adoc an geeigneter Stelle die Dateien Teammitglieder.adoc und Software.adoc über includes ein.
-
Ergänzen Sie in der Datei Teamdokumentation.adoc im Dokumentenkopf Ihren Namen und Ihre E-Mail.
-
Passen Sie in der Datei README.md den Titel an und fügen Sie eine kurze Beschreibung für die Erzeugung des HTML-Dokumentes hinzu.
-
Legen Sie in der Datei Teammitglieder.adoc eine Tabelle mit den Namen und der Rolle der Teammitglieder an.
-
Legen Sie eine Datei .gitignore an, um HTML- und PDF-Datei vom Repository auszuschließen.
-
Ergänzen Sie in der Datei Teamdokumentation.adoc im Dokumentenkopf Ihren Namen und Ihre E-Mail.
-
Legen Sie in der Datei Software.adoc eine Auflistung der für das Teamprojekt eingesetzten Software mit Links zu den entsprechenden Webseiten an.
-
Ergänzen Sie in der Datei Teamdokumentation.adoc im Dokumentenkopf Ihren Namen und Ihre E-Mail.
-
Generieren Sie mit der Asciidoctor-Erweiterung in Visual Studio Code das finale Teamdokumentation.adoc HTML-Document.
-
Schauen Sie sich das fertige HTML-Document im Webbrowser und den Projektverlauf (commit history) in Ihrem GitHub Repository an.
Ausblick
Eine weitere Möglichkeiten für die Zusammenarbeit über GitHub sind Pull requests, welche wir uns im nächsten Semester (Teil 8 - Zusammenarbeit 3) anschauen.
- Pull requests
-
Anfrage mit Diskussion für das Mitarbeiten oder Aufnehmen (merge) einer ausgelagerten Bearbeitungen (extra Branch oder Fork) in den Haupt-Branch.