##
How to use git:

git ist ein Versionskontroll-System, dessen Ziel es ist, durch Versionierung das (Zusammen-)Arbeiten an Projekten zu erleichtern und einen Überblick über Veränderungen und Zustände von Dateien in einem Ordner (git-Repository) zu be- oder erhalten.

Um git zu verwenden, solltet ihr sicherstellen, dass es bei euch installiert ist. Dabei kommt es stark auf euer Betriebssystem und dessen Version an. Schaut da am besten selbst nach, ob es installiert ist und wie ihr es installiert.

git kann entweder nur lokal auf eurem System verwendet werden, oder aber auch in Verbindung mit einem Server. In dieser Anleitung erstellen wir auf dem Fachbereichs-GitLab-Server ein Repository und machen unseren ersten Commit auf dem Branch main.

#
Um ein git Repository auf unserem Fachbereichs-GitLab zu erstellen, benötigt ihr einen Fachbereichs-Account. Diesen erstellt ihr, indem ihr euch einmalig auf https://portal.mi.fu-berlin.de mit euren Zedat-Nutzerdaten einloggt. Ihr müsst nichts weiter tun und könnt euch auch gleich wieder ausloggen. Wichtig war nur, dass ihr euren Account damit erstellt habt.

Danach könnt ihr euch unter https://git.imp.fu-berlin.de einloggen.

Dort gibt es oben rechts einen Knopf ```Projekt erstellen``` oder ```new project```. Diesen drückt ihr. Auf einer neuen Seite werdet ihr nach einem Namen und einer URL für euer Repository gefragt. (Wenn ihr eins ändert, ändert sich auch das andere mit). Ihr könnt euch da jetzt einen Namen aussuchen und weiter gehen. Den Haken bei der Frage nach der README Datei könnt ihr entfernen und das Projekt erstellen.

Jetzt seht ihr auf der neuen Seite einige Befehle. Diese sind Beispiele für erste Schritte mit dem neuen Repository. 


##
git mit SSH-Keys verwenden

SSH-keys erstellen:

Hierfür öffnet ihr ein Terminal eurer Wahl auf einem Betriebssystem eurer Wahl.
Im geöffneten Terminal gebt ihr das folgende ein:
```
ssh-keygen -t ed25519
```
Dies erstellt euch, zumindest sofern ihr OpenSSH installiert habt, einen SSH-Key mit Typ ed25519. Den braucht ihr, um euch auf Geräten per SSH einloggen zu können, auch wenn diese Geräte den Passwort-Zugang per SSH abgeschaltet haben. \
Während der Erstellung werden euch einige Fragen gestellt.
```
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/<username>/.ssh/id_ed25519):
```
Hier werdet ihr gefragt, wohin ihr euren Key speichern wollt. Meistens ist der default okay. Ihr könnt den Key später noch verschieben.\
\
Wenn ihr euch den Rechner mit anderen Personen teilt, solltet ihr die Frage nach der Passphrase 
```
Enter passphrase (empty for no passphrase):
```
nicht einfach mit Enter wegklicken, sondern euch eine Passphrase für den Schlüssel ausdenken (und auch Merken/Aufschreiben!).

Zum Schluss wird euch noch ein nettes Bild (wie unten) angezeigt.
```
The key's randomart image is:
+--[ED25519 256]--+
|+E.       +      |
|.=     . + o     |
|+.o   . . +      |
|o= . +   +       |
|+ X O   S        |
|.* # o           |
|o O.O            |
|+. Ooo           |
|o..+*.           |
+----[SHA256]-----+
```
Ihr müsstet jetzt im angegebenen Ordner zwei Dateien sehen: id_ed25519 und id_ed25519.pub \
Die Datei OHNE .pub am Ende gebt ihr NIEMALS weg. Die .pub gebt ihr wohin ihr wollt.

So, jetzt habt ihr euch erfolgreich einen SSH-Key erstellt. \
Aber was macht man nun damit?

Diesen Schlüssel könnt ihr jetzt im Fachbereichs-Gitlab hinterlegen.

Zuerst kopiert ihr euch den Inhalt der .pub Datei.

Dann loggt ihr euch unter https://git.imp.fu-berlin.de ein und geht in der Spalte links oben auf euer Profilbild. Dann klickt ihr auf ```Preferences``` oder ```Einstellungen``` und dann auf der neuen Seite auf ```SSH-Keys```.
Dort angekommen klickt ihr auf ```add Key``` oder ```Schlüssel hinzufügen``` und fügt den kopierten Inhalt dann in das große Feld ein. Ihr könnt dem Schlüssel noch einen Namen geben oder ähnliches. Die restlichen Werte könnt ihr so lassen, wie sie sind.

Nun habt ihr euren SSH-Key im GitLab hinterlegt. Jetzt müsst ihr git und ssh noch sagen, wann sie diesen Schlüssel verwenden sollen. Dafür nutzt ihr am besten eine SSH-Config:

Eure SSH-Config schreibt ihr, indem ihr die Datei unter ``` ~/.ssh/config ``` (die auf eurem eigenen Rechner) bearbeitet oder anlegt. Konkret müsst ihr das folgende an eure Bedürfnisse anpassen:
```
Host git.imp.fu-berlin.de
HostName git.imp.fu-berlin.de
User git
IdentityFile ~/.ssh/id_ed25519
```
Der Nutzername MUSS immer git sein, sonst funktioniert das ganze nicht.

Jetzt könnt ihr git normal verwenden und müsst nicht immer euer Zedat-Passwort für das klonen eingeben.