Homepage: https://koppor.github.io/git-workshop/
- 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?
- Umgebungsvariable
LANG
aufen
stellen. - Install chocolatey
choco install git
choco install conemu clink
- Installiere die AutoHotKeyScripts installieren - insbesondere Windows+
v
für Konsole - Für Repository https://github.com/koppor/git-demonstration Schreibrecht holen
Szenario: Mehrere Entwickler arbeiten an einem gemeinsamen Repository
- Auf GitHub einloggen
- Repository https://github.com/koppor/git-demonstration forken
- Repository lokal klonen
- Stand mit
gitk
ansehen (gitk --all
)
- Lernziel: "local and remote repository" erreicht
- Lernziel: "branch" erreicht
- In README.md eine neue Überschrift
Überschrift
und darunter eine ZeileTest123
einfügen - 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
- Mit
gitk
aktuellen Stand ansehen (SHIFT+F5
ingitk
)
- Lernziel "commit" erreicht
- Commit pushen (In
git gui
aufPush
klicken) - Commit mit
gitk
ansehen (Shift+F5 ingitk
)
- Lernziel "Was kann
gitk
grundsätzlich?" erreicht
- Weitere Zeile
Test 456
anfügen - Commmit erstellen
- Warten, dass jemand anderes auch in der Datei etwas geändert hat (an anderer Stelle)
- Commit pushen. Schlägt fehl.
- Pullen
- Mit
gitk
aktuellen Stand ansehen (SHIFT+F5
ingitk
) - Pushen (mit
git push
) - Mit
gitk
aktuellen Stand ansehen (SHIFT+F5
ingitk
) - Zeile
Test 678
anfügen - Warten, dass jemand anderes auch in der Datei etwas geändert hat (an der selben Stelle)
- Commit pushen. Schlägt fehl.
- Pullen
- Es entsteht ein Konflikt:
<<<<<<< HEAD
,=======
und>>>>>>> b51b4334ea7dbcd39ff9d34afe6c6f0299a5b22e
- Mit
gitk
ansehen - Konflikt lösen
- "Händisch"
- In IntelliJ
- Committen
- Pushen
- Lernziel "Wie löst man einen Konflikt?" erreicht
- Ergebnis mit
gitk
ansehen - Neue Zeile einfügen
- Committen
- Neue Zeile einfügen
- Committen
git rebase -i
- Zweites
pick
durch "Squash" ersetzen - Speichern
- Ergebnis mit
gitk
ansehen
- Lernziel: "Wie poliert man bereits bestehende Commits?" erreicht
- Lernziel: "Was ist
git rebase -i
?" erreicht
- Pushen
- Diskussion: Was sind die Probleme bei einer Polierung?
- Neue Zeile einfügen
- Committen
- Neue Zeile einfügen
- In
git gui
"Amend Last Commit" auswählen - Zeile hinzufügen
- Committen
- Pushen
- Lernziel "Was bedeutet "Amend Last Commit?"" erreicht
- Pullen
- Lernziel "Wie halte ich mein lokales Repository aktuell?" erreicht
- In gitk auf ersten Commit gehen
- Rechte Maustaste "Rest master branch to here"
HARD
auswählen
- Datei
README.md
ansehen
- Lernziel "Was ist ein "hard reset"?" erreicht
- Pushen. Schlägt fehl.
- "force overwrite" auswählen (Äquivalent:
git push -f
)
- Lernziel "Was ist ein "push -f"?" erreicht
- Lokalen Ordner
git-demonstration
löschen
- Fork von https://github.com/koppor/git-demonstration erstellen
- Auf GitHub ansehen
- Lernziel "Was ist ein Fork?" erreicht
- Lokal klonen
git checkout -b
generic-improvements` - neuen Branch "generic-improvements" erstellen- Zeile in README.md erstellen
- Committen
git push -u origin generic-improvements
- neuen Branchgeneric-improvements
imorigin
erstellen, incl. automatischem tracking.- Auf GitHub: Pull-Request erstellen.
[WIP]
im Titel verwenden
- (Jemand kommentiert pull request)
- Lernziel: "Wie referenziere ich Commits, Issues oder Pull-Requests?" erreicht
- Neue Zeile hinzufügen, committen und pushen
- Lernziel: "Wie reagiert man auf Review-Kommentare?" erreicht
- In GitHub pull request ansehen
[WIP]
entfernen- Ggf. Pull-Request aufräumen
git rebase -i
--> alle commits zu einem zusammen fassen- Nicht notwendig, da Committer squashen kann
- (Jemand akzeptiert pull request)
- Unterschiede merge / rebase / squash erläutern
- 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:
git remote add koppor https://github.com/koppor/git-demonstration
git fetch koppor
- So holt man sich alles vom Repository
koppor
lokal - Lernziel "Wie kommt man an einen Branch von jemand anderem?" erreicht
gitk --all
git merge koppor/master
- So hält man lokalen Branch mit aktuellen Änderungen bei
koppor
aktuell
- Alternativ:
git rebase koppor/master
- Lernziel "Was bedeutet "rebase"?" erreicht