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