From d849bdc62ed7e3ecd7baa29362fe01c4a8d3e644 Mon Sep 17 00:00:00 2001
From: morit02 <morit02@mi.fu-berlin.de>
Date: Wed, 17 Jan 2024 21:51:58 +0100
Subject: [PATCH] Add git remote Repository commands/info - Connect a local to
 a global repository - Connect a local project to a global repository

---
 README.md | 111 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 102 insertions(+), 9 deletions(-)

diff --git a/README.md b/README.md
index 438f7df..458eaa6 100644
--- a/README.md
+++ b/README.md
@@ -860,15 +860,108 @@ c1 <- c2 <- c5 <-c6 <- c3 <- c4         b1 (*)
 
 
 
-## Add your files
+## Remote Repositories
+Git Repository können auch auf **Servern** (Online) gespeichert werden.\
+Da das Repository Online gespeichert wird, kann **unabhängig** vom benutztem **Gerät** auf dieses remote Repository zugegriffen werden.
+Dabei können mehrere Entwickler an einem Projekt (Repository) **zusammenarbeiten**.
+
+Es gibt verschiedene **Sichtbarkeitsstufen** die für remote Repository festgelegt werden können:
+- **Private** (Benutzer müssen zum Projekt (Repository) hinzugefügt werden - einzelned/als Gruppe)
+- **Internal** (Benutzer der gleichen Organisation)
+- **Public** (Alle Benutzer - ohne Authentifizierung)
+
+
+### Nutzen eines remote Repository
+Falls ein Projekt als remote Repository **gespeichert** oder **öffentlich** zugänglich gemacht werden soll können folgende **Möglichkeiten** auftreten:
+- Ein [**lokales Verzeichnis**](#lokales-projekt) (Projekt) soll in einem remote Repository gespeichert werden
+- Ein [**lokales Git Repository**](#lokales-repository) soll in einem remote Repository gespeichert werden
+- Ein **remote Repository** soll **lokal** bearbeitet/genutzt werden
+
+Für die Nutzung eines remote Repository muss dieses Repository erst erstellt werden.
+
+> Ein remote Repository hat eigene Branches (mit `origin` bezeichnet).\
+> Diese Upstream Branches können mit lokale Branches verknüpft werden.\
+> Dabei haben lokale Branches maximal ein Upstream Branch zu welcher lokale Commits für das remote Repository gepusht werden.
+
+### Erstellen eines remote Repository
+Es gibt unterschiedliche **Plattformen** die das Hosten von Git Repository anbieten:
+- GitHub
+- GitLab
+- Bitbucket
+
+
+#### Erstellung eines remote Repository mit GitLab
+- `New Project` (rechts oben)
+- `Create blank project` (oder von einem Template: `Create from template`)
+- Repository Einstellungen
+    - Projektnamen
+    - Sichtbarkeitslevel (Private, Internal oder Public)
+    - README Dokument
+- `Create project`
+
+
+### Lokales Projekt
+In diesem Fall **existiert** bereits ein Projekt **ohne** Git Repository. Dieses Projekt soll jetzt mit einem **remote** Repository gespeichert werden.
+
+**Folgende Schritte sind notwendig:**
+
+0. Erstellen eines remote Repository
+    > Auf einer Plattform die Git Repository hosted - Speicherort des Repository
+1. Navigation in das Verzeichnis des lokalen Projekts
+    ```
+    cd [lokales Projekt]
+    ```
+2. Erstellen eines lokalen Git Repository
+    ```
+    git init --initial-branch=main
+    ```
+    > Bei GitLab standardmäßig die Hauptbranch: main
+3. Verknüpfung zum erstellten remote Repository herstellen
+    ```
+    git remote add origin [URL des erstellten remote Repository]
+    ```
+4. Alle Dokumente/Verzeichnisse im Repository speichern
+    ```
+    git add .
+    git commit -m "Initial commit"
+    ```
+5. Die lokale Branch mit der Upstream Branch verknüpfen und den lokalen Commit zum remote Repository hinzufügen
+    ```
+    git push --set-upstream origin main
+    ```
+    > Verknüpfung der lokalen Branch `main` mit der Upstream Branch (remote Branch) `main`\
+    > Dadurch werden Commits automatisch von der lokalen Branch `main` auf die remote Branch `main` gepusht
+
+
+### Lokales Repository
+In diesem Fall gibt es bereits ein **lokales** Git Repository auf dem Gerät, das jetzt mit dem zuvor erstellten **remote** Repository **verknüpft** werden soll.
+
+**Folgende Schritte sind notwendig:**
+
+0. Erstellen eines remote Repository
+    > Auf einer Plattform die Git Repository hosted - Speicherort des Repository
+1. Navigation in das Verzeichnis des lokalen Projekts
+    ```
+    cd [lokales Projekt]
+    ```
+2. Entferen der Verknüpfung zu einem möglichen remote Repository
+    ```
+    git remote rename origin old-origin
+    ```
+3. Verknüpfung zum erstellten remote Repository herstellen
+    ```
+    git remote add origin [URL des erstellten remote Repository]
+    ```
+4. Festlegen der Upstream branches
+    ```
+    git push --set-upstream origin --all
+    ```
+    > Verknüpfung der lokalen Branch `main` mit der Upstream Branch (remote Branch) `main`\
+    > Dadurch werden Commits automatisch von der lokalen Branch `main` auf die remote Branch `main` gepusht
+5. Festlegen der Upstream tags
+    ```
+    git push --set-upstream origin --tags
+    ```
 
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
 
-```
-cd existing_repo
-git remote add origin https://git.imp.fu-berlin.de/morit02/git-basics.git
-git branch -M main
-git push -uf origin main
-```
 
-- 
GitLab