Ab und zu sollte man sein Repository entrümpeln
(siehe auch Alte Branches archivieren).
Lokal kann man Branches einfach, ändern oder umbenennen.
Die Änderungen dann mit einzelnen push
-Aufrufen in ein entferntes Repository
zu übertragen ist aber umständlich.
Einfacher ist es mit der Option clone --mirror
:
Sie spiegelt den Zustand aller lokalen Branches in das Zielrepository.
Dabei ist es egal, ob die Branches neu angelegt, geändert oder gelöscht wurden.
Nach dem Aufruf hat das Zielrepository den gleichen Stand für alle Branches
wie das lokale Repository.
Man geht wie folgt vor:
clone --mirror
eine Arbeitskopie erstellen undbranch -d
und branch -m
die Branches bearbeiten und dannpush --mirror
alle Änderungen übertragen.Achtung: Ein push
von einem mirror
-Repository ändert man Branches im Zielrepository,
dies hat dieselben Auswirkungen wie ein push --force
.
Wegen Risiken und Nebenwirkungen lesen die Packungsbeilage
oder fragen sie einen Experten.
Ein Repository enthält mehrere Branches.
remoterepo $ git branch branch-a branch-b branch-c * master
Mit der Option --mirror
des clone
-Befehls erstellen wir eine Arbeitskopie
des Repositorys.
$ git clone --mirror remoterepo localrepo
Alle Branches aus ‘remoterepo’ sind als hier als tracking Branch abgebildet.
localrepo $ git branch -v branch-a 0523ff7 create file-a branch-b 2582789 create file-b branch-c 53ef1a1 create file-c * master 2aebcc2 create file-master
Diese Branches können wir jetzt nach Lust und Laune bearbeiten.
localrepo $ git branch -f branch-a master # Zurücksetzen localrepo $ git branch -D branch-b # Löschen localrepo $ git branch -M branch-c moved-c # Umbenennen localrepo $ git branch new-branch-d # Neu anlegen
Ein einfaches push
überträgt alles.
localrepo $ git push
Die Branches in beiden Repositorys stimmen überein.
localrepo $ git branch -v branch-a 2aebcc2 create file-master * master 2aebcc2 create file-master moved-c 53ef1a1 create file-c new-branch-d 2aebcc2 create file-master remoterepo $ git branch -v branch-a 2aebcc2 create file-master * master 2aebcc2 create file-master moved-c 53ef1a1 create file-c new-branch-d 2aebcc2 create file-master