From 1645161365dbd52d8a64fda5078692f2d07b4d61 Mon Sep 17 00:00:00 2001
From: morit02 <morit02@mi.fu-berlin.de>
Date: Sat, 20 Jan 2024 20:15:00 +0100
Subject: [PATCH] Add how to edit/change the remote Repository

---
 README.md | 208 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 207 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index b8fb6f6..5cea1bd 100644
--- a/README.md
+++ b/README.md
@@ -19,6 +19,9 @@ Eine Tabelle zur Übersicht der verwendeten Befehle
 | `git checkout` | Zu einer anderen Branch wechseln
 | `git merge` | Zusammenführen von zwei Branches mit einem Merge-Commit
 | `git rebase` | Zusammenführen von zwei Branches durch anhängen der Commits
+| `git clone` | Remote Repository lokal kopieren
+| `git pull` | Lokales Repository mit Änderungen des remote Repository aktualisieren
+| `git push` | Remote Repository mit Änderungen des lokalen Repository aktualisieren
 
 
 ## Projekterstellung
@@ -871,11 +874,214 @@ Es gibt verschiedene **Sichtbarkeitsstufen** die für remote Repository festgele
 - **Public** (Alle Benutzer - ohne Authentifizierung)
 
 
+
+### Zusammenhang von remote und lokalen Repositories
+Um Projekte Online unabhängig vom aktuellen Gerät zu speichern oder mit anderen Entwicklern an einem Projekt zu arbeiten, ist die Erstellung eines **remote Repository** sinnvoll.
+Die verschiedenen Plattformen auf denen Git Projekte gespeichert werden dienen dabei vorallem als globaler Speicher/Zugriffsort.\
+Änderungen werden meistens in Entwicklungsumgebungen auf dem lokalen Gerät erstellt, indem das Projekt lokal kopiert und im Anschluss das remote Repository aktualisiert wird.
+> Änderungen des remote Repository können auch über die Web-Anwendung erstellt werden
+
+**Schritte zum lokalen Bearbeiten eines remote Repository:**
+1. **Kopieren oder Aktualisieren eines remote Repository**
+    > Falls das remote Repository bereits als **lokales Repositoy existiert**, ist es ausreichend das Repository zu **aktualisieren**.
+    > Ansonsten muss das remote Repository **kopiert** werden.
+
+    - **Kopieren des remote Repository**\
+        Durch das Kopieren entsteht ein **lokales Repository** mit dem aktuellen Stand des remote Repository
+        > Es gibt zwei Repository von dem Projekt:
+        > - Ein **remote Repository** (Online)
+        > - Ein **lokales Repository** (auf dem lokalen Gerät)
+
+        Mit dem folgenden Befehl kann ein remote Repositoy kopiert werden:
+        ```
+        git clone <URL des remote Repository>
+        ```
+
+    - **Aktualisieren des lokalen Repository**\
+        **Änderungen** vom remote Repository müssen explizit zum lokalen Repository hinzugefügt werden
+
+        Mit dem folgendem Befehl kann ein lokales Repository aktualisiert werden:
+        ```
+        git pull
+        ```
+
+2. **Bearbeiten des Projekts**\
+    **Änderungen** des Projekts können am lokalen Repository durch `Commits` vorgenommen werden
+    > Die lokalen `Commits` sind nur im lokalen Repository verfügbar und müssen explizit zum remote Repository hinzugefügt werden!
+
+3. **Remote Repository aktualisieren**\
+    Durch das aktualisieren des remote Repository mit dem lokalen Repository werden die lokalen `Commits` zum remote Repository hinzugefügt
+
+    Mit dem folgenden Befehl können Änderungen vom lokalen zum remote Repository hinzugefügt werden:
+    ```
+    git push origin <Branch des remote Repository>
+    ```
+
+**Beispiel:**
+- Commits werden mit c markiert
+
+<table>
+<tr>
+<th> Git Befehle - Bearbeiten eines Repository </th>
+<th> Remote Repository (origin main) </th>
+<th> Lokales Repository (main) </th>
+
+</tr>
+
+<tr>
+<td>
+</td>
+
+
+<td>
+
+```
+c1 <- c2
+```
+</td>
+
+<td>
+</td>
+</tr>
+
+<tr>
+<td>
+
+- Kopieren des remote Repository
+```
+git clone <URL des remote Repository>
+```
+</td>
+
+
+<td>
+
+```
+c1 <- c2
+```
+</td>
+
+
+<td>
+
+```
+c1 <- c2
+```
+</td>
+</tr>
+
+<tr>
+<td>
+
+- Änderungen zum lokalen Repository hinzufügen (*c3*)
+```
+git commit
+```
+</td>
+
+
+<td>
+
+```
+c1 <- c2
+```
+</td>
+
+
+<td>
+
+```
+c1 <- c2 <- c3
+```
+</td>
+</tr>
+
+<tr>
+<td>
+
+- Änderungen zum remote Repository hinzufügen
+```
+git push origin main
+```
+</td>
+
+
+<td>
+
+```
+c1 <- c2 <- c3
+```
+</td>
+
+
+<td>
+
+```
+c1 <- c2 <- c3
+```
+</td>
+</tr>
+
+<tr>
+<td>
+
+- Änderungen am remote Repository
+> Durch andere Entwickler oder von einem anderem Gerät
+</td>
+
+
+<td>
+
+```
+c1 <- c2 <- c3 <- c4
+```
+</td>
+
+
+<td>
+
+```
+c1 <- c2 <- c3
+```
+</td>
+</tr>
+
+<tr>
+<td>
+
+- Lokales Repository aktualisieren
+```
+git pull origin main
+```
+</td>
+
+
+<td>
+
+```
+c1 <- c2 <- c3 <- c4
+```
+</td>
+
+
+<td>
+
+```
+c1 <- c2 <- c3 <- c4
+```
+</td>
+</tr>
+</table>
+
+
+
+
+
+
 ### 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.
 
-- 
GitLab