Files
eidp-2023/Tutorium/tut02/GIT.md
2023-10-31 10:17:34 +01:00

6.9 KiB

Beispiel Git-Workflow


SSH-Key generieren und im Git hinzufügen

Linux & Mac-OS

Generiere einen Key mit

ssh-keygen -t ed25519 -C "you@mail.com"

Gib den Key in die Konsole aus mit

cat ~/.ssh/id_ed25519.pub

Kopiere mit Strg+Shift+C oder Rechtklick den Key aus dem Terminal und fügen ihn im Git als SSH Key hinzu.

Windows

Generiere einen Key und kopiere ihn

ssh-keygen.exe -t ed25519 -C "you@mail.com"
cat ~/.ssh/id_ed25519.pub | clip

fügen dann den Key im Git als SSH Key hinzu.

Mac

Generiere einen Key mit

ssh-keygen -t ed25519 -C "you@mail.com"
pbcopy < ~/.ssh/id_ed25519.pub

fügen dann den Key im Git als SSH Key hinzu.


Das Repository clonen

Erstmal ist es wichtig wie man sich im Terminal überhaupt bewegt und umschaut. Wenn wir das Terminal starten, egal ob in Windows/Linux/Mac landen wir im Home-Verzeichnis often bezeichnet als ~. Um den ersten Schritt zu gehen müssen wir erstmal wissen was wir hier überhaupt haben. Hierfür haben wir das Programm ls, welches den Inhalt in einem (ohne Argumente im aktuellen) Verzeichnis auflistet. Eine Beispielausgabe wäre:

nils@linux ~> ls
total 16
drwxr-xr-x 2 nils nils 4096 Oct 27 02:14 Desktop/
drwxr-xr-x 2 nils nils 4096 Oct 27 02:16 Downloads/
drwxr-xr-x 2 nils nils 4096 Oct 27 02:14 Pictures/
drwxr-xr-x 2 nils nils 4096 Oct 27 02:14 Videos/

Nun können wir uns in die anderen Verzeichnisse bewegen mit cd (change directory).

nils@linux ~> cd Downloads/
nils@linux ~/Downloads> ls
total 0
-rw-r--r-- 1 nils nils 0 Oct 27 02:19 cat.png

mit cd .. können wir uns jetzt ein Verzeichnis wieder nach oben bewegen

nils@linux ~/Downloads> cd ..
nils@linux ~> ls
total 16
drwxr-xr-x 2 nils nils 4096 Oct 27 02:14 Desktop/
drwxr-xr-x 2 nils nils 4096 Oct 27 02:19 Downloads/
drwxr-xr-x 2 nils nils 4096 Oct 27 02:14 Pictures/
drwxr-xr-x 2 nils nils 4096 Oct 27 02:14 Videos/

nun clonen wir das Repository indem wir ins Git gehen, auf unser persönliches Repository gehen. Und oben bei SSH auf Copy/Kopieren gehen.

Nun müssen wir einfach nur noch folgenden Befehl eingeben

nils@linux ~> git clone ssh://git@git.laurel.informatik.uni-freiburg.de:2222/2021WS-EiP/np163.git
Cloning into 'np163'...
The authenticity of host '[git.laurel.informatik.uni-freiburg.de]:2222 ([132.230.166.132]:2222)' can't be established.
ED25519 key fingerprint is SHA256:zR3d+3MewcoiAuwVidHYfWcsNjT/OVz5FR6IwIyTNCs.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[git.laurel.informatik.uni-freiburg.de]:2222' (ED25519) to the list of known hosts.
remote: Enumerating objects: 594, done.
remote: Counting objects: 100% (594/594), done.
remote: Compressing objects: 100% (573/573), done.
remote: Total 594 (delta 336), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (594/594), 86.90 KiB | 2.63 MiB/s, done.
Resolving deltas: 100% (336/336), done.

nun können wir mit ls nachschauen dass ein neuer Ordner erschienen ist, in meinem Fall np163.

nils@linux ~> ls
total 20
drwxr-xr-x  2 nils nils 4096 Oct 27 02:14 Desktop/
drwxr-xr-x  2 nils nils 4096 Oct 27 02:19 Downloads/
drwxr-xr-x  2 nils nils 4096 Oct 27 02:14 Pictures/
drwxr-xr-x  2 nils nils 4096 Oct 27 02:14 Videos/
drwxr-xr-x 17 nils nils 4096 Oct 27 02:24 np163/

Nun können wir diesen Ordner in VSCode öffnen und haben einen Workspace um die Übungsaufgaben zu bearbeiten.


Nun bewegen wir uns ins Git-Verzeichnis mit cd np163. Und führen unseren ersten Git-Command aus git status

nils@linux ~/np163 (master)> git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

wir sehen, dass aktuell noch nichts im Verzeichnis geändert wurde. Das ändern wir jetzt indem wir in VSCode eine hello_world.py erstellen. Und den git status wiederholen

nils@linux ~/np163 (master)> git status
On branch master
Your branch is up to date with 'origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello_world.py

nothing added to commit but untracked files present (use "git add" to track)

hier schlägt uns Git auch direkt schon vor git add zu verwenden um die neue Datei hinzuzufügen.

nils@linux ~/np163 (master)> git add hello_world.py
nils@linux ~/np163 (master)> git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   hello_world.py

mit git add -A können alle aktuelle Änderungen hinzugefügt werden. nun können wir die Datei in unser Git eintragen indem wir git commit -m 'meine nachricht' verwenden.

nils@linux ~/np163 (master)> git commit -m 'created hello_world.py'
[master 4191d5b] created hello_world.py
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 hello_world.py

und diese Änderung dann mit git push hochladen.

nils@linux ~/np163 (master)> git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 285 bytes | 285.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To ssh://git.laurel.informatik.uni-freiburg.de:2222/2021WS-EiP/np163.git
   06b6eb7..4191d5b  master -> master

Git - VSCode

Zunächst erstellen wir eine Datei mit dem Namen hello_world.py über die Verzeichnisverwaltung von VSCode. Wir sehen dass die neue Datei bereits grün angezeigt, weil es eine neue Datei im Git ist.

image not found

Nun wechsel wir die Ansicht von der Verzeichnisverwaltung zu Git ganz links außen.

image not found

Nun drücken wir bei unserer neu erstellten Datei auf das +. Diese wird dann als Staged Changes angezeigt.

image not found

Nun legen wir eine Nachricht fest welche die Änderungen representiert und beschreibt.

image not found

Nun drücken wir auf Commit und nun sind unsere Änderungen übernommen.

image not found

Nun können wir noch auf Sync Changes drücken um die Änderungen auch an den Git-Services Gitea zu schicken. Danach werden keine weiteren Dateien mehr im Git-Reiter angezeigt und online sehen wir dass unsere Änderungen hochgeladen wurden.

image not found

image not found


Für Anregung gerne eine kurze Mail schreiben.