git und GitHub Grundwissen

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

Ziele

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
  5. In README.md eine neue Überschrift Überschrift und darunter eine Zeile Test123 einfügen
  6. 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
  7. Mit gitk aktuellen Stand ansehen (SHIFT+F5 in gitk)
    • Lernziel “commit” erreicht
  8. Commit pushen (In git gui auf Push klicken)
  9. Commit mit gitk ansehen (Shift+F5 in gitk)
    • Lernziel “Was kann gitk grundsätzlich?” erreicht
  10. Weitere Zeile Test 456 anfügen
  11. Commmit erstellen
  12. Warten, dass jemand anderes auch in der Datei etwas geändert hat (an anderer Stelle)
  13. Commit pushen. Schlägt fehl.
  14. Pullen
  15. Mit gitk aktuellen Stand ansehen (SHIFT+F5 in gitk)
  16. Pushen (mit git push)
  17. Mit gitk aktuellen Stand ansehen (SHIFT+F5 in gitk)
  18. Zeile Test 678 anfügen
  19. Warten, dass jemand anderes auch in der Datei etwas geändert hat (an der selben Stelle)
  20. Commit pushen. Schlägt fehl.
  21. Pullen
  22. Es entsteht ein Konflikt: <<<<<<< HEAD, ======= und >>>>>>> b51b4334ea7dbcd39ff9d34afe6c6f0299a5b22e
  23. Mit gitk ansehen
  24. Konflikt lösen
  25. Committen
  26. Pushen
    • Lernziel “Wie löst man einen Konflikt?” erreicht
  27. Ergebnis mit gitk ansehen
  28. Neue Zeile einfügen
  29. Committen
  30. Neue Zeile einfügen
  31. Committen
  32. git rebase -i
  33. Zweites pick durch “Squash” ersetzen
  34. Speichern
  35. Ergebnis mit gitk ansehen
    • Lernziel: “Wie poliert man bereits bestehende Commits?” erreicht
    • Lernziel: “Was ist git rebase -i?” erreicht
  36. Pushen
  37. Diskussion: Was sind die Probleme bei einer Polierung?
  38. Neue Zeile einfügen
  39. Committen
  40. Neue Zeile einfügen
  41. In git gui “Amend Last Commit” auswählen
  42. Zeile hinzufügen
  43. Committen
  44. Pushen
    • Lernziel “Was bedeutet “Amend Last Commit?”” erreicht
  45. Pullen
    • Lernziel “Wie halte ich mein lokales Repository aktuell?” erreicht
  46. In gitk auf ersten Commit gehen
  47. Rechte Maustaste “Rest master branch to here”
    • HARD auswählen
  48. Datei README.md ansehen
    • Lernziel “Was ist ein “hard reset”?” erreicht
  49. Pushen. Schlägt fehl.
  50. “force overwrite” auswählen (Äquivalent: git push -f)
    • Lernziel “Was ist ein “push -f”?” erreicht
  51. 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
  3. Lokal klonen
  4. git checkout -b generic-improvements` - neuen Branch “generic-improvements” erstellen
  5. Zeile in README.md erstellen
  6. Committen
  7. git push -u origin generic-improvements - neuen Branch generic-improvements im origin erstellen, incl. automatischem tracking.
  8. Auf GitHub: Pull-Request erstellen.
    • [WIP] im Titel verwenden
  9. (Jemand kommentiert pull request)
    • Lernziel: “Wie referenziere ich Commits, Issues oder Pull-Requests?” erreicht
  10. Neue Zeile hinzufügen, committen und pushen
    • Lernziel: “Wie reagiert man auf Review-Kommentare?” erreicht
  11. In GitHub pull request ansehen
  12. [WIP] entfernen
  13. Ggf. Pull-Request aufräumen
    • git rebase -i –> alle commits zu einem zusammen fassen
    • Nicht notwendig, da Committer squashen kann
  14. (Jemand akzeptiert pull request)
    • Unterschiede merge / rebase / squash erläutern
  15. 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
  3. gitk --all
  4. git merge koppor/master
    • So hält man lokalen Branch mit aktuellen Änderungen bei koppor aktuell
  5. Alternativ: git rebase koppor/master
    • Lernziel “Was bedeutet “rebase”?” erreicht