Skip to content

Latest commit

 

History

History
162 lines (150 loc) · 6.07 KB

Übungsaufgabe.md

File metadata and controls

162 lines (150 loc) · 6.07 KB

git und GitHub Grundwissen

Homepage: https://koppor.github.io/git-workshop/

Ziele

  • Installiertes git
  • Grundwissen git
    • Was ist ein Repository?
    • Was ist ein Branch?
    • Was ist ein Commit?
    • Wie committed man?
    • Wie löst man einen Konflikt?
    • Wie poliert man bereits bestehende Commits?
    • Was ist git rebase -i?
    • Was bedeutet "Amend Last Commit?"
    • Was sind die Probleme bei einer Polierung?
    • Wie halte ich mein lokales Repository aktuell?
    • Was ist ein "hard reset"?
    • Was ist ein "push -f"?
    • Was kann git gui grundsätzlich?
    • Was kann gitk grundsätzlich?
  • Grundwissen GitHub
    • Was ist ein Fork?
    • Was ist ein Pull-Request?
    • Was bedeutet [WIP]?
    • Wie kommentiert man einen Pull-Request?
    • Wie reagiert man auf Review-Kommentare?
    • Wie erstellt man einen neuen Branch?
    • Wie kommt man an einen Branch von jemand anderem?
    • Was bedeutet "rebase"?
    • Was ist Markdown?
    • Wie referenziere ich Commits, Issues oder Pull-Requests?
    • Wie räume ich einen Pull-Request auf?

Aufgaben

Vorbereitung

Schritte: Grundwissen git

Szenario: Mehrere Entwickler arbeiten an einem gemeinsamen Repository

  1. Auf GitHub einloggen
  2. Repository https://github.com/koppor/git-demonstration forken
  3. Repository lokal klonen
  4. Stand mit gitk ansehen (gitk --all)
  • Lernziel: "local and remote repository" erreicht
  • Lernziel: "branch" erreicht
  1. In README.md eine neue Überschrift Überschrift und darunter eine Zeile Test123 einfügen
  2. Commit erstellen (git gui)
  • Datei dem Commit hinzufügen
  • Erläuterung: Damit ändert man den Index ("Staging Area")
  • Commit-Nachricht erstellen
  • Committen
  • Lernziel "Was kann git gui grundsätzlich?" erreicht
  1. Mit gitk aktuellen Stand ansehen (SHIFT+F5 in gitk)
  • Lernziel "commit" erreicht
  1. Commit pushen (In git gui auf Push klicken)
  2. Commit mit gitk ansehen (Shift+F5 in gitk)
  • Lernziel "Was kann gitk grundsätzlich?" erreicht
  1. Weitere Zeile Test 456 anfügen
  2. Commmit erstellen
  3. Warten, dass jemand anderes auch in der Datei etwas geändert hat (an anderer Stelle)
  4. Commit pushen. Schlägt fehl.
  5. Pullen
  6. Mit gitk aktuellen Stand ansehen (SHIFT+F5 in gitk)
  7. Pushen (mit git push)
  8. Mit gitk aktuellen Stand ansehen (SHIFT+F5 in gitk)
  9. Zeile Test 678 anfügen
  10. Warten, dass jemand anderes auch in der Datei etwas geändert hat (an der selben Stelle)
  11. Commit pushen. Schlägt fehl.
  12. Pullen
  13. Es entsteht ein Konflikt: <<<<<<< HEAD, ======= und >>>>>>> b51b4334ea7dbcd39ff9d34afe6c6f0299a5b22e
  14. Mit gitk ansehen
  15. Konflikt lösen
  1. Committen
  2. Pushen
  • Lernziel "Wie löst man einen Konflikt?" erreicht
  1. Ergebnis mit gitk ansehen
  2. Neue Zeile einfügen
  3. Committen
  4. Neue Zeile einfügen
  5. Committen
  6. git rebase -i
  7. Zweites pick durch "Squash" ersetzen
  8. Speichern
  9. Ergebnis mit gitk ansehen
  • Lernziel: "Wie poliert man bereits bestehende Commits?" erreicht
  • Lernziel: "Was ist git rebase -i?" erreicht
  1. Pushen
  2. Diskussion: Was sind die Probleme bei einer Polierung?
  3. Neue Zeile einfügen
  4. Committen
  5. Neue Zeile einfügen
  6. In git gui "Amend Last Commit" auswählen
  7. Zeile hinzufügen
  8. Committen
  9. Pushen
  • Lernziel "Was bedeutet "Amend Last Commit?"" erreicht
  1. Pullen
  • Lernziel "Wie halte ich mein lokales Repository aktuell?" erreicht
  1. In gitk auf ersten Commit gehen
  2. Rechte Maustaste "Rest master branch to here"
  • HARD auswählen
  1. Datei README.md ansehen
  • Lernziel "Was ist ein "hard reset"?" erreicht
  1. Pushen. Schlägt fehl.
  2. "force overwrite" auswählen (Äquivalent: git push -f)
  • Lernziel "Was ist ein "push -f"?" erreicht
  1. Lokalen Ordner git-demonstration löschen

Schritte: Grundwissen GitHub

  1. Fork von https://github.com/koppor/git-demonstration erstellen
  2. Auf GitHub ansehen
  • Lernziel "Was ist ein Fork?" erreicht
  1. Lokal klonen
  2. git checkout -b generic-improvements` - neuen Branch "generic-improvements" erstellen
  3. Zeile in README.md erstellen
  4. Committen
  5. git push -u origin generic-improvements - neuen Branch generic-improvements im origin erstellen, incl. automatischem tracking.
  6. Auf GitHub: Pull-Request erstellen.
  • [WIP] im Titel verwenden
  1. (Jemand kommentiert pull request)
  • Lernziel: "Wie referenziere ich Commits, Issues oder Pull-Requests?" erreicht
  1. Neue Zeile hinzufügen, committen und pushen
  • Lernziel: "Wie reagiert man auf Review-Kommentare?" erreicht
  1. In GitHub pull request ansehen
  2. [WIP] entfernen
  3. Ggf. Pull-Request aufräumen
  • git rebase -i --> alle commits zu einem zusammen fassen
  • Nicht notwendig, da Committer squashen kann
  1. (Jemand akzeptiert pull request)
  • Unterschiede merge / rebase / squash erläutern
  1. In GitHub pull request ansehen
  • Lernziel "Was ist ein Pull-Request?" erreicht
  • Lernziel "Was bedeutet [WIP]?" erreicht
  • Lernziel: "Wie kommentiert man einen Pull-Request?" erreicht
  • Lernziel: "Was ist Markdown?" erreicht

(ggf. erneute Demonstration von git rebase -i und git push -f)

Folgend weitere Stichwörter:

  1. git remote add koppor https://github.com/koppor/git-demonstration
  2. git fetch koppor
  • So holt man sich alles vom Repository koppor lokal
  • Lernziel "Wie kommt man an einen Branch von jemand anderem?" erreicht
  1. gitk --all
  2. git merge koppor/master
  • So hält man lokalen Branch mit aktuellen Änderungen bei koppor aktuell
  1. Alternativ: git rebase koppor/master
  • Lernziel "Was bedeutet "rebase"?" erreicht