Fingerübungen
Übung 1 - Allein
Hab keine Sorge, dass Du etwas falsch machst. Diese Übung findet nur auf Deinem lokalen Rechner statt. Am Ende kannst Du den Ordner mit dem Repository einfach wieder löschen und alles ist gut.
- Erstelle mit
git init
ein lokales Repository auf Deinem Rechner. - Füge nun wiederholt Dateien hinzu oder editiere ihren Inhalt und übe auf diesem Weg den
git add
&git commit
Workflow. - Lass Dir mit
git diff
die Änderungen anzeigen, bevor Du sie in die Staging Area hinzufügst. - Lass Dir Deine History mit
git log
odergit log --oneline
anzeigen. Kopiere die ID des Commits, zu dem Du zurückspringen möchtest. Die IDs sind die wilden Buchstaben-/Zahlenkombinationen, die jeweils am Anfang der Zeile stehen. Man nennt Sie auch SHA (“Secure Hash Algorithm”). - Springe nun mit
git checkout <SHA>
zu einer früheren Version zurück. Für<SHA>
musst Du eben die Commit ID einfügen. Schaue Dir nun Deine Dateien im Editor an. Was hat sich geändert? - Springe nun mit
git checkout master
wieder zur aktuellen Version.
Übung 2 - Allein
In Übung 1 hast Du ein lokales Repository erstellt und damit gearbeitet. Wenn Du aber mit einem remote repository - also nicht nur lokal - arbeiten möchtest, ist es einfacher, diesen “remote” zunächst online zu erstellen, es dann auf Deinen Rechner zu klonen und dort dann lokal weiterzuarbeiten. Auf diese Weise hast Du durch das Klonen gleich den korrekten Link zum remote gesetzt.
Diesen Vorgang sollst Du nun einmal selbst üben.
- Gehe auf https://gitup.uni-potsdam.de und erstelle mit dem “New Project”-Button ein neues Repository.
- Gib einen informativen Namen für Dein Projekt an.
- Optional kannst Du noch eine Beschreibung hinzufügen. Diese taucht dann auch im README auf (s.u.).
- Für die Sichtbarkeit kannst Du “private” (nur für Dich sichtbar) oder “Internal” (auch für andere Git.UP-Nutzer der Uni sichtbar) wählen.
- Wähle außerdem immer die Option “Initialize repository with a README”. So kannst Du das Repository direkt klonen, weil es bereits einen Inhalt gibt.
- So, fertig. Nun kannst Du die https-Adresse Deines Repository nutzen, um Dein Repository mit
git clone ...
auf Deinen Rechner zu bringen. - Lass Dir mittels
git remote -v
anzeigen, dass sich Dein lokales Repository auch seiner “Herkunft” bewusst ist. - Willst Du alles wieder löschen? Ein lokales Repository kannst Du einfach als Verzeichnis löschen. Dein Repository in GitLab löscht Du unter “Settings –> Advanced –> Remove project”.
Übung 3 - Zu zweit
Probiert mal aus, gemeinsam an einem Projekt zu arbeiten. Die folgende Anleitung sieht zwar umfangreich aus, das Prinzip ist aber eigentlich einfach: person1
legt ein Repository in GitLab an, person2
erstellt davon einen Fork und fügt eine Änderung hinzu. Sie möchte nun, dass diese Änderung zurück in das ursprüngliche Repository von person1
fließt…und die Geschichte nimmt ihren Lauf.
person1
legt auf https://gitup.uni-potsdam.de ein neues Repository an - nennen wir esgit-uebung2
. Dieses liegt dann also unter.../person1/git-uebung2
.person1
klont das Repository, fügt eine neue Dateimeins.md
mit einer neuen Zeile hinzu. Dannadd
,commit
,push
.person2
kommt ins Spiel: Sie erstellt einen Fork vonperson1/git-uebung2
und erhält somit auf Git.UP.../person2/git-uebung2
. Nun klontperson2
den Fork auf ihren Rechner. Dort fügt sie eine weitere Zeile zur Dateimeins.md
hinzu, dannadd
,commit
,push
.- Nun kommt’s:
person2
möchteperson1
bitten, die neueste Änderung (eine neue Zeile!) in ihr Repositoryperson1/git-uebung2
zu übernehmen. Denn die neue Zeile stellt eine echte Verbesserung dar! Dafür gehtperson2
auf die GitLab-Seitehttps://gitup.uni-potsdam.de/person2/git-uebung2
und stellt einen Merge-Request: Im linken SidebarMerge Requests
auswählen –>New Merge Request
. Der Source Branch istperson2/git-uebung2
(master) und der Target Branch istperson1/git-uebung2
(master). Nun aufCompare branches and continue
.person2
hat nun die Möglichkeit, den Merge Request weiter zu beschreiben und anzupreisen. Anschließend aufSubmit Merge Request
. person1
kann auf der Seitehttps://gitup.uni-potsdam.de/person1/git-uebung2
unter Merge Requests den Merge Request inspizieren, kommmentieren oder ggf. auch Änderungen anfordern. Fallsperson1
zufrieden ist, kann sie denMerge
-Button drücken.- Um das Ganze pefekt zu machen, sollte
person2
in ihrem lokalen Fork-Repository noch das Ursprungsrepo (upstream
) als remote hinzufügen, damit sie auch Änderungen vonperson1
in ihren Code einpflegen kann:git remote add upstream https://gitup.uni-potsdam.de/person1/git-uebung2
. Bitte den Erfolg mitgit remote -v
verifizieren. Nun kannperson2
mittelsgit pull upstream master
ihr lokales Repo mit dem remoteupstream
synchronisieren. - Bitte probiert das gleich mal aus, indem
person1
ihr lokales Repo mittelsgit pull origin master
mit ihrem remote synchronisiert und nun gleich noch eine dritte Zeile einfügt oder etwas in einer anderen Zeile ändert. Dann wiederadd
,commit
undpush
. Nun sollperson2
diese Änderung mittelsgit pull upstream master
in ihr lokales Repo holen. - Wow…