Notizen, Tipps und Tricks zum Versionsverwaltung git.

Änderungen siehe Changelog unten.

schickeres diff

1alias diffogram='git --no-pager diff --no-index'

nur gucken

1git show origin/<branchname>:pfad/datei.name

Beispiel

1git show origin/main:local-deb-repo/README.md

master in main umbenennen

Wer aus $GRUENDEN seinen master-Zweig in den main-Zweig1 umbenennen möchte, kann das folgendermaßen tun:

 1$ git branch -m master main
 2$ git push -u origin main
 3Gesamt 0 (Delta 0), Wiederverwendet 0 (Delta 0)
 4remote: 
 5remote: To create a merge request for main, visit:
 6remote:   https://gitlab.com/rainerrose/unbound-tools/-/merge_requests/new?merge_request%5Bsource_branch%5D=main
 7remote: 
 8To gitlab.com:rainerrose/unbound-tools.git
 9 * [new branch]      main -> main
10Branch 'main' folgt nun Remote-Branch 'main' von 'origin'.

Das -m bewirkt, dass auch die Historie verschoben2 wird, es bleiben also alle Änderungen erhalten.

Default Branch in git setzen

Geht wohl erst ab Version 2.28

1git config --global init.defaultBranch main

dann soll auch folgendes gehen

1git init --initial-branch=main
2git init -b main

Default Branch in Gitlab setzen

Anschließend lässt sich der Default-Branch in Gitlab folgenderweise auf main setzen:

Allgemein->Einstellungen->Repository->Default-Branch->Aufklappen

Dort jetzt noch main auswählen und schlussendlich die Änderungen abspeichern (Save changes).

Zwei-Faktor-Authentisierung bei Gitlab

Wird die 2FA in Gitlab aktiviert, kann sich nicht mehr über HTTPS per Username/Passwort angemeldet werden. (SSH mit Pub-Key geht weiterhin).

1$ git pull
2remote: HTTP Basic: Access denied
3remote: You must use a personal access token with 'read_repository' or 'write_repository' scope for Git over HTTP.
4remote: You can generate one at https://gitlab.com/-/profile/personal_access_tokens
5fatal: Authentication failed for 'https://gitlab.com/username/projekt-name.git'

Abhilfe

in Gitlab

In Gitlab anmelden: Benutzereinstellungen->Zugangs-Token

Dort ein "persönliches Zugangs-Token" (Add a personal access token) generieren und Rechte vergeben read_repository oder write_repository

im Repository

Erstmal wegnehmen

1$ git remote remove origin

remote mit geheimen Token einfügen

1$ git remote add origin https://oauth2:HIER_GEHEIMES_TOKEN_EINFUEGEN@gitlab.com/username/projekt-name.git

Upstream-Branch setzen

1$ git branch --set-upstream-to=origin/master master

Alle branches (auch remote) anzeigen

1git branch -a

git remote branch lokal speichern

1git checkout -b <local branch name> origin/<remote branch name>
2git checkout -b serverfix origin/serverfix

Branch hochladen

1git push origin <Name des Branch>

mit anderem ssh-key anmelden

In der SSH-Konfiguration einen neuen Eintrag anlegen

1$ cat ~/.ssh/config
2Host gutMerkbarerName
3  HostName der.gitlab.host.name.fqdn
4  User rose
5  IdentityFile /home/rose/.ssh/id_ed25519.rose
6  IdentitiesOnly yes

Jetzt kann noch ein neues Remote-Ziel angelegt werden

1$ git remote add rose ssh://git@gutMerkbarerName:22/rose/project.git

jetzt kann mit

1$ git push rose

hochgeladen werden und git fragt nach dem anderen key

1Enter passphrase for key '/home/rose/.ssh/id_ed25519.rose':

statt

1$ git push origin
2Enter passphrase for key '/home/rose/.ssh/id_ed25519':

als anderer committen

1$ git config --local user.name "Rainer Rose"
2$ git config --local user.email "email@adresse"
3$ git commit
4$ git config --local --unset user.name
5$ git config --local --unset user.email

Alternativen zu --local:

Git Config User / Email

Parameter Ort
--local .git/config
--global ~/.gitconfig
--system /etc/gitconfig

Tags pushen

einzelner

1git push origin v0.42

alle

1git push origin --tags

lokale Branches löschen

nur die, die gemerged sind

1git branch --merged | grep -v \* | xargs git branch -D

alle

1git branch | grep -v \* | xargs git branch -D

Changelog

Datum Änderung
11.10.2023 zwei neue Tipps: “schickeres diff” & “Nur gucken”
06.12.2023 git remote branch lokal speichern
11.12.2023 Branch hochladen
29.04.2025 Neuer Abschnitt Git Config User / Email
15.05.2025 lokale Branches löschen

  1. ist ja nichts anderes als ein Branch ↩︎

  2. moved2 ↩︎