git setup zrschosen

This commit is contained in:
Michael S. 2023-10-31 14:51:13 +01:00
commit aa38f2a948
2 changed files with 242 additions and 0 deletions

68
README.md Normal file
View file

@ -0,0 +1,68 @@
Bei dem Error `fatal: refusing to merge unrelated histories` den Befehl `git pull origin master --allow-unrelated-histories` verwenden und das Problem ist gelöst.
### [Michis Git Verstäännis](./michi_git.md "Git isz doof")
### Der Reponame "main" ist voreingestellt, es gehen auch andere.
Am Beispiel dieses Readme.md:
```
git checkout -b main
git add README.md
git commit -m "first commit"
git remote add origin git@teapot.informationsanarchistik.de:Wobbl/tipps_und_tricks.git
git push -u origin main
```
ॐ wn@magma:~/python/tipps_und_tricks→git:(main) vi README.md
ॐ wn@magma:~/python/tipps_und_tricks→git:(main)
ॐ wn@magma:~/python/tipps_und_tricks→git:(main) ✗ git push -u origin main
Branch 'main' folgt nun Remote-Branch 'main' von 'origin'.
Everything up-to-date
ॐ wn@magma:~/python/tipps_und_tricks→git:(main) ✗ git commit README.md
[main a0d4d5c] geändert: README.md
1 file changed, 11 insertions(+), 1 deletion(-)
ॐ wn@magma:~/python/tipps_und_tricks→git:(main) git push -u origin main
>> Objekte aufzählen: 5, fertig.
Zähle Objekte: 100% (5/5), fertig.
Delta-Kompression verwendet bis zu 4 Threads.
Komprimiere Objekte: 100% (2/2), fertig.
Schreibe Objekte: 100% (3/3), 535 Bytes | 535.00 KiB/s, fertig.
Gesamt 3 (Delta 0), Wiederverwendet 0 (Delta 0), Pack wiederverwendet 0
remote: . Processing 1 references
remote: Processed 1 references in total
To teapot.informationsanarchistik.de:Wobbl/tipps_und_tricks.git
83c741e..a0d4d5c main -> main
Branch 'main' folgt nun Remote-Branch 'main' von 'origin'.
# ssh
Ein Zugriff auf den Teetopf über https ist komplexer und unsicherer als über **ssh**
ssh ist ein unverzichtbare universelles "Schweizermesser" für professionelles und sicheres Arbeiten im Netz.
Um _forgejo_ auf teapot mit ssh zu bedienen, muss mensch einen zweiteiligen Schlüssel generieren.
Das vom Server bevorzugte, weil am schwersten zu knackende Verschlüsselungssystem ist ed25519.
Einfach zu erzeugen:
```
ssh-keygen -t ed25519
```
Das zum Entsperren des Schlüssels notwendige lokale Passwort sollte böse und gemein sein, sonst ist die Übung im Falle eines geklauten Rechners fürn A...
Je nach verwendetem Desktopsystem bietet Linus natürlich an, sich die Passphrase wegzuspeichern.
Um damit das remote System zu bedienen, muss der öffentliche Teil des Schlüssels dort abgelegt werden. Lokal ist das zumeist die Datei
```
~/.ssh/id_ed25519.pub
```
Die klappste in die Zwischenablage und bunkerst sie in deinem Profil im _forgejo_
**Auf keinen Fall den privaten Schlüssel hochladen oder überhaupt jemals irgendwo durch irgendwelche Leitungen schicken!**
Sollte das versehentlich passiert sein, kannste den Schlüssel löschen und nen neuen anlegen.
Der Publickey darf im Fernsehen gesendet werden, das schadet nix.
Eine prima Seite mit Infos zu git und ssh schrieb der Patrick Asmus, klixdu hier: [SSH-Keys für gitea](https://www.media-techport.de/2023/08/howto-ssh-schluessel-fuer-gitea-einfache-einrichtung/ "HP Patrick Asmus")
Wenn alles passt, kannst du mit der Befehlsverbindung **&&**, was soviel bedeutet wie "If Exitcode=OK then" die nötigen Kommandos zusammenfassen:
```
vi README.md && git commit -m "Mein Kommentar" README.md && git push -u origin main
```
und du hast die aktuelle Version im lokalen und im entfernten Repo.
Das funktioniert nicht bei nicht eigenen Repos, wenn die auf "privat" geschaltet sind.

174
michi_git.md Normal file
View file

@ -0,0 +1,174 @@
# Git
Git ist nen Versionverknalltütenprogramm was eder brauch oder auch nicht.
## Inhaltsverzeichniss
1. [Git Configurieren](#git-cofigurieren)
2. [Start](#start)
3. [Daten hinzufügen und entfernen](#daten-hinzufügen-und-entfernen)
4. [Neue Version an Git geben und überprüfen](#neue-version-an-git-geben-und-überprüfen)
5. [Mit Git Servern arbeiten](#mit-git-servern-arbeiten)
6. [push und pull](#push-und-pull)
7. [Branches](#branches)
8. [Grafisches Git](#grafisches-git)
## Git Cofigurieren
>### Nutzername
>```
>git config user.name "<user-name>"
>```
>>- Setzt den Nutzername für das Aktuelle Repo
>>- Wenn kein Name angegeben ist wird der aktuelle Festgelegter Name ausgegeben
>>- Wen nach config ein --global gesetzt wird dann wird das für die ganze git installation des Benutzer festgelegt oder usgegeben
>### E-Mail
>```
>git config user.name "<e-mail>"
>```
>>- Setzt die E-Mail für das Aktuelle Repo
>>- Wenn keine E-Mail angegeben ist wird der aktuelle Festgelegte E-Mail ausgegeben
>>- Wen nach config ein --global gesetzt wird dann wird das für die ganze git installation des Benutzer festgelegt oder usgegeben
## Start:
Ein Repo ist ein Ding wo deine Projektdaten gespeichert sind.
>### Initialisieren deines Repos:
>```
>git init
>```
>### Downloade ein existierenes Repo:
>```
>git clone <url>
>```
Nun kannst du mit Git arbeiten z.b. Daten Erstellen und bearbeiten
## Daten hinzufügen und entfernen:
>### Füge Daten zum Repo hinzu:
>```
>git add <datei>
>```
>>Beispiel:
>>```
>>git add README.md
>>git add .
>>git add ./README.md
>>```
>### Entferne Daten von Repo:
>```
>git rm <datei>
>```
>>Beispiel:
>>```
>>git rm README.md
>>git rm .
>>git rm ./README.md
>>```
## Neue Version an Git geben und überprüfen:
>### Commit erstellen:
>```
>git commit <message>
>```
>> eine Message ist Pflicht!
>### Log anschauen
>```
>git log
>```
>> Zeigt dir deine commits an und auch was du geändert hast
>### Status ansehen
>```
>git status
>```
>> Zeigt dir deine Aktuellen Änderungen an und den aktuelen Branch
## Mit Git Servern arbeiten:
>### Füge ein entferntes Repo hinzu:
>```
>git remote add origin <url>
>```
>>- Die adresse muss mit .git enden
>>- origin ist die Bezeichnung des entfernen Repos
>### Entferne ein entferntes Repo :
>```
>git remote rm origin <url>
>```
## push und pull:
>### push ladet den Branch auf den Server:
>```
>git push origin main
>```
>>- origin ist die Beschreibung des Remote Servers
>>- main Ist Der Branch der gepusht werden soll
>>- push(en) = drücken(de)
>### pull ladet den Branch von Server:
>```
>git pull origin main
>```
>>- origin ist die Beschreibung des Remote Servers
>>- main Ist Der Branch der gepusht werden soll
>>- pull(en) = ziehen(de)
## Branches
Branches auch Zweige sind einfach mehrere Arbeitsflächen.
>### Neuen Branch erstellen
>```
>git branch <branch-name>
>```
>>- Erstellt einfach ein Abbild von den aktuellen Branch
>>- Du bist aber immer noch auf den Aktuellen Branch
>### Branch wecheln
>```
>git checkout <branch-name>
>```
>> Nun hast du den Branch gewechselt
>### Branches zusammenführen
>```
>git merge <branch-name>
>```
>>- Nimmt die Änderungen von den angegebenen Branch und Schiebt sie auf den aktuellen Branch
>### Branches loschen
>```
>git branche -d <branch-name>
>```
>>- Du darfst blos nicht in diesen Branch sein also mit checkout in ein anderen Branch wechseln
## Grafisches Git
Falls man den überblick verliehrt ist es hilfreich sich Das Repo grafisch anzusehen
>### Git Gui
>```
>git gui
>```
>> Grafische Benutzeroberfläche mit vielen Features
>### Gitk
>```
>gitk
>```
>> Eher um die Vergangenheit des Projetes anzuschauen
>### Entwicklerplattformen
>Viele Entwicklerplattformen haben eine git intigration
>>- Visual studio Code
>>- Jetbrains IDE
>>- ...