Git
master in main umbenennen
- inspiriert durch diese Anleitung, erweitert um gitlab
master in main umbenennen,
--move
behält die History bei$ git branch --move master main
ins Repository pushen und Upstream setzen
$ git push --set-upstream origin main
main
in gitlab als default branch setzen- Settings → Repository → Default Branch
- Settings → Repository → Protected Branches
- protect
main
- unprotect
master
- protect
- was einem sonst noch so einfällt
master
aus dem Repository löschen$ git push --delete origin master
im Fall von
warning: ignoring broken ref refs/remotes/origin/HEAD
$ git remote set-head origin main
Integrationen/Nutzung aktualisieren
- was einem so einfällt
- CI/CD
- readthedocs
- was einem so einfällt
Remote-Branches updaten
Gelöschte Branches werden bei pull und fetch nicht übernommen (gelöscht). Dafür muss das Flag prune gesetzt sein:
$ git fetch -p
Löschen von Remote-Branches
Erst prüfen, ob der Branch bereits gelöscht und noch nicht übernommen wurde.
$ git fetch -p
Dann:
$ git push <remote_name> --delete <branch_name>
also z.B.
$ git push origin --delete feature/fxmlparts
Branching-Modell
- stable-mainline-Modell
neuer Versuch, der den
main
ziemlich aktuell hält - (Git-Branching-Modell
das führt wohl zu Problemen und der
main
-Zweig ist nur ab und an aktuell, werde ich nach und nach aufgeben)
Branch anlegen
$ git checkout -b <branch>
Branch wechseln
$ git checkout <branch>
Branch in aktuell ausgecheckten Branch mergen (kein Fast Forward)
$ git merge --no-ff <branch>
Branch löschen
$ git branch -d <branch>
Branches auflisten (lokal, dann remote)
$ git branch $ git branch --remote
Tag erstellen
$ git tag -a <tag>
Repository von einem Server auf einen anderen kopieren
Und das Ganze mit Aussuchen, welche branches und tags übernommen werden. Ich gehe davon aus, dass das Repo vorher und nachher mit origin bezeichnet werden soll.
Schritte übernommen von https://developer.atlassian.com/blog/2016/01/totw-copying-a-full-git-repo/
- alles eingecheckt haben, lieber doppelt prüfen, pushen, sicher ist sicher
Liste aller branches anzeigen lassen
$ git branch -a
alle branches auschecken, die ins neue Repository übernommen werden sollen
$ git checkout <branch>
tags holen
$ git fetch --tags
nicht benötigte tags löschen
$ git tag -d <tag>
prüfen, ob lokal alles ok ist und übernommen werden kann
$ git tag $ git branch -a
Link zum origin-Repository löschen
$ git remote rm origin
Neues Repository als origin verlinken
$ git remote add origin <repo-url>
Alles in Repo pushen
$ git push origin --all $ git push --tags
evtl. branches wieder mit Repo-branches verlinken
$ git branch --set-upstream-to=origin/<branch> <branch>
fertig
submodule löschen
- https://gist.github.com/myusuf3/7f645819ded92bda6677
- die
fetch
undpull
sind, um sicherzustellen, dass man auf dem aktuellen Stand arbeitet
$ git fetch -p $ git pull $ git submodule deinit <path_to_submodule> $ git rm <path_to_submodule> $ git commit -m "Removed submodule" $ rm -rf .git/modules/<path_to_submodule> $ git push $ git fetch -p
Mehrere Git-Profile auf einem Rechner
Das Problem: in einem Projekt bin ich "ekleinod@edgesoft.de", im anderen Projekt "ekkart.kleinod@fokus.fraunhofer.de"
In der normalen .gitconfig
kann ich nur eine Person sein.
Lösung: Profile abhängig vom Verzeichnis laden, in dem sie liegen (geht auch mit Branches, für mich reichen aber Verzeichnisse). Dazu habe ich die Ideen von Sohan Mondal adaptiert.
Man muss zwei Schritte erledigen:
Profildateien für jedes Profil anlegen
.gitconfig_edgesoft
[user] name = Ekkart Kleinod email = ekleinod@edgesoft.de
.gitconfig_fokus
[user] name = Ekkart Kleinod email = ekkart.kleinod@fokus.fraunhofer.de
in der globalen
.gitconfig
Profile den Verzeichnissen zuordnen.gitconfig
(Windows)[includeIf "gitdir:C:/working/git/"] path = .gitconfig_edgesoft [includeIf "gitdir:C:/working/fokus-git/"] path = .gitconfig_fokus
.gitconfig
(Linux)[includeIf "gitdir:~/working/git/"] path = .gitconfig_edgesoft [includeIf "gitdir:~/working/fokus-git/"] path = .gitconfig_fokus
Lösung 2: die config des jeweiligen Repositories anpassen. Finde ich umständlich, ist nur der Vollständigkeit erwähnt.