# Github
## Autoren
Lizenz CC0
- [x] HB
- [x] RM
GitHub ist eine Plattform für Versionskontrolle, die Entwicklern hilft, Softwareprojekte in Zusammenarbeit mit anderen Entwicklern zu entwickeln.
Dabei wird das Versionskontrollensystem Git genutzt.
## Begriffe
Repository
~ Ein Repository ist ein Speicherort für ein Projekt und enthält alle Dateien, Verzeichnisse und Historie des Projekts. Es kann öffentlich oder privat sein.
Branch
~ Branches sind separate Versionen des Codes, die sich vom Hauptzweig abzweigen. Entwickler können in Branches unabhängig voneinander arbeiten, ohne die Hauptversion zu beeinträchtigen. Neue Branches werden oft erstellt, um neue Funktionen zu implementieren oder Fehler zu beheben. Die Änderungen in einem Branch können später in den Hauptzweig integriert werden.
Commit
~ Ein Commit ist eine oder mehrere Änderung vom Branch, die dann im Branch gepeichert wird.
Pull-Request
~ Mit dem Pull-Request können Änderungen von zwei verschiedenen Branches verglichen und zusammengeführt werden.
## TODO
weitere Begriffe klären (ggf. in anderen Kapiteln)
- [ ] Stage
- [ ] Fork
## Einrichtung
1. Github Account erstellen.
2. Repository beitreten oder selbst erstellen
3. Git herunterladen
4. Eine IDE(z.B. Visual Studio Code) herunterladen.
5. In VS Code auf die Extensions klicken und Git herunterladen.
6. Die Command Palette wird in Visual Studio Code geöffnet (mit Strg+Shift+P) und "Git: Clone" wird ausgewählt. Jetzt soll die URL des Repositorys eingegeben werden, das geklont werden soll, und anschließend soll es an einem Speicherort auf dem Computer gespeichert werden.
## Tipps
### Mehrere Source Controls
Falls mit mehreren verschiedenen Repositorys gearbeitet wird, lohnt es sich, ein Workspace zu erstellen. Dafür wird einfach in Visual Studio Code oben links auf "File" und dann auf "Add Folder to Workspace" geklickt. Wenn beide Repositories geklont wurden, erscheinen automatisch mehrere Source Controls.
### Git mit Repository verknüpfen
1. Remote-URL erstmal überprüfen
```bash
git remote -v
```
2. Alte Remote-URL entfernen (falls notwendig): Falls das alte Remote-Repository nicht mehr benötigt wird, kann es entfernen werden.
```bash
git remote remove origin
```
3. Neue Remote-URL hinzufügen: Füge das neue Remote-Repository hinzu. Die URL kann man sich auch über Github holen, wenn man auf Code und dann unter HTTPS den Link kopiert.
```bash
git remote add origin https://github.com/username/new-repo.git
```
4. Branch auswählen:
```bash
git checkout -b feature/delete_update
```
---
```plantuml
@startgit
* a0f65180 (origin/cds/issue700) Layered: Clarified code. #700
* 23a9f435 Layered: Fix wrong hierarchy handling. #700
| * 9037d534 (HEAD -> master, origin/master) Build: Properly sign Maven artifacts. #722
|/
* 91fc1c7b Build: Mount Jenkins home. #722
* 4fe6df1e Build: Add HOME env var to maven container. #722
@endgit
```
```mermaid
---
title: Example Git diagram
---
gitGraph
commit
commit
branch develop
checkout develop
commit
commit
checkout main
merge develop
commit
commit
```