commit aa38f2a948c67aad57624f12c0a2c76123c860ae Author: megamichi Date: Tue Oct 31 14:51:13 2023 +0100 git setup zrschosen diff --git a/README.md b/README.md new file mode 100644 index 0000000..08b9af0 --- /dev/null +++ b/README.md @@ -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. + diff --git a/michi_git.md b/michi_git.md new file mode 100644 index 0000000..2f3fd5c --- /dev/null +++ b/michi_git.md @@ -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 "" +>``` +>>- 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 "" +>``` +>>- 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 +>``` +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 +>``` +>>Beispiel: +>>``` +>>git add README.md +>>git add . +>>git add ./README.md +>>``` + +>### Entferne Daten von Repo: +>``` +>git rm +>``` +>>Beispiel: +>>``` +>>git rm README.md +>>git rm . +>>git rm ./README.md +>>``` + +## Neue Version an Git geben und überprüfen: +>### Commit erstellen: +>``` +>git commit +>``` +>> 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 +>``` +>>- Die adresse muss mit .git enden +>>- origin ist die Bezeichnung des entfernen Repos + +>### Entferne ein entferntes Repo : +>``` +>git remote rm origin +>``` + +## 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 +>``` +>>- Erstellt einfach ein Abbild von den aktuellen Branch +>>- Du bist aber immer noch auf den Aktuellen Branch + +>### Branch wecheln +>``` +>git checkout +>``` +>> Nun hast du den Branch gewechselt + +>### Branches zusammenführen +>``` +>git merge +>``` +>>- Nimmt die Änderungen von den angegebenen Branch und Schiebt sie auf den aktuellen Branch + +>### Branches loschen +>``` +>git branche -d +>``` +>>- 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 +>>- ...