# Alles rund um Git ## Readme's - [Michis Git Verstännis](./michi_git.md "Git ist doof") ## Weiteres: ### Der Reponame "main" ist voreingestellt, es gehen auch andere. > Am Beispiel dieses Readme.md: > _Setup:_ > ``` > 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 > ``` > _Bash:_ > ``` > $ vi README.md > $ git push -u origin main > Branch 'main' folgt nun Remote-Branch 'main' von 'origin'. > Everything up-to-date > $ 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 Setup 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. ## 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.