@@ -22,7 +22,7 @@ Zum anlegen von Git Repositories wird standardmäßig das **aktuelle Verzeichnis
Um in einen bestimmten Verzeichnis ein Git Repository anzulegen kann der **Pfad** als weiterer **Parameter** angegeben werden.
**Beispiel:**
Als Beispiel gibt es die folgende Verzeichnisstruktur, wobei das aktuelle Verzeichnis mit einem **\*** makiert ist:
Als Beispiel gibt es die folgende Verzeichnisstruktur, wobei das aktuelle Verzeichnis mit einem **\*** markiert ist:
<table>
<tr>
...
...
@@ -56,6 +56,212 @@ git init
## Änderungen speichern
Das **Hinzufügen** von Dateien/Verzeichnissen erfolgt in **zwei Schritten**.
1. Dokumente/Verzeichnisse zum **Staging-Bereich** (staging area) hinzufügen
1. Dokumente/Verzeichnisse des **Staging-Bereichs** als neue Version speichern (**Commit** als neue Projektversion)
### Staging-Bereich
Der Staging-Bereich dient als **Sammlung** von Dokumenten/Verzeichnissen deren **Veränderungen** gespeichert werden sollen.
Dokumente/Verzeichnisse befinden sich **nicht** automatisch im Staging-Bereich.
Es müssen also alle Dokumente/Verzeichnisse **explizit** zum **Staging-Bereich****hinzugefügt** werden.
Dokumtente/Verzeichnisse können mit `git add <file/directory>` oder `git stage <file/directory>` zum **Staging-Bereich hinzugefügt** werden.
Dokumente/Verzeichnisse können mit `git rm <file/directory>` wieder aus dem **Staging-Bereich entfernt** werden.
**Beispiel:**
- In dem Beispiel wurden bereits Dokumente/Verzeichnisse zum Staging-Bereich hinzugefügt
- Dokumente/Verzeichnisse die sich im **Staging-Bereich befinden** sind mit einem **(+)** markiert
<table>
<tr>
<th> Dokumente/Verzeichnisse </th>
<th> Git Befehl - Staging von Dokumenten/Verzeichnissen </th>
<th> Git Befehl - Unstaging von Dokumenten/Verzeichnissen </th>
</tr>
<td>
```
~/DIRECTORY_1 (+)
~/DIRECTORY_2
~/file_1.txt (+)
~/file_2.txt
```
</td>
<!--- Staging Table -->
<td>
<table>
<tr>
<td>
- Staging DIRECTORY_2
```
git add DIRECTORY_2
```
</td>
<td>
- Staging file_2.txt
```
git add file_2.txt
```
</td>
</tr>
<tr>
<td>
- Resultat:
```
~/DIRECTORY_1 (+)
~/DIRECTORY_2 (+)
~/file_1.txt (+)
~/file_2.txt
```
</td>
<td>
- Resultat:
```
~/DIRECTORY_1 (+)
~/DIRECTORY_2
~/file_1.txt (+)
~/file_2.txt (+)
```
</td>
</tr>
</table>
</td>
<!--- Unstaging Table -->
<td>
<table>
<tr>
<td>
- Unstaging DIRECTORY_1
```
git rm DIRECTORY_1
```
</td>
<td>
- Unstaging file_1.txt
```
git rm file_1.txt
```
</td>
</tr>
<tr>
<td>
- Resultat:
```
~/DIRECTORY_1
~/DIRECTORY_2
~/file_1.txt (+)
~/file_2.txt
```
</td>
<td>
- Resultat:
```
~/DIRECTORY_1 (+)
~/DIRECTORY_2
~/file_1.txt
~/file_2.txt
```
</td>
</tr>
</table>
</td>
</table>
### Projektversion anlegen
Eine neue **Projektversion** wird mithilfe der Dokumente/Verzeichnisse, die sich im **Staging-Bereich** befinden, erstellt.
Dokumente/Verzeichnisse die sich **nicht** im **Staging-Bereich** befinden werden **nicht** für die neue **Projektversion** verwendet.
Eine neue **Projektversion** wird nur im **lokalen Repository** erstellt!
Eine **Projektversion** wird in **Git**: ***Commit*** genannt und kann mit `git commit -m "commit message"` erstellt werden.
Mit dem **Parameter**`-m` kann ein Text für den **aktuellen Commit** (die neue Projektversion) gespeichert werden.
Dokumente/Verzeichnisse die mit einem ***Commit*** als neue Projektversion gespeichert werden, werden **automatisch** wieder aus dem **Staging-Bereich entfernt**.
**Beispiel:**
- In dem Beispiel wurden bereits Dokumente/Verzeichnisse zum Staging-Bereich hinzugefügt.
- Dokumente/Verzeichnisse die sich im **Staging-Bereich** befinden sind mit einem **(+)** markiert