Ich habe ein Git-Projekt, in dem ich ein anderes (SPSS) als Submodule eingebunden habe.
Vor grob einer Woche habe ich mich entschlossen, das Submodule-Projekt durch seine
neuere Variante zu ersetzen (SPSS-ng). Jetzt habe ich diese Konstellationen:
mein “main”-Zweig verwendet SPSS
mein “develop”-Zweig verwendet SPSS-ng
Der Wechsel zwischen den Zweigen erscheint nun etwas komplizierter!
TLDR: Nach git checkout zweigname noch diese beiden Kommandos ausführen:
git submodule update --init --recursive
git clean -dff
Zweigwechsel ohne Submodule
Wenn ich an einem Git-Projekt ohne Submodule arbeite oder wenn das Git-Projekt in allen
Zweigen denselben Stand desselben Sobmodules verwendet, dann sind die Zweigwechsel
ganz einfach:
Wechsel zum “develop”-Zweig: git checkout develop
Wechsel zum “main”-Zweig: git checkout main
Zweigwechsel mit Submodule
develop –> main
Kommandos:
1234
git checkout main
git submodule update --init --recursive
git clean -dff
# Nun existiert SPSS, SPSS-ng ist gelöscht!
Hier noch die Mischung aus Ein- und Ausgaben:
1234567891011121314151617181920212223242526
$ git status
Auf Branch develop
Ihr Branch ist auf demselben Stand wie 'origin/develop'.
nichts zu committen, Arbeitsverzeichnis unverändert
$ git checkout main
warning: unable to rmdir 'SPSS-ng': Das Verzeichnis ist nicht leer
Zu Branch 'main' gewechselt
Ihr Branch ist auf demselben Stand wie 'origin/main'.
$ git submodule update --init --recursive
Submodul-Pfad: 'SPSS': 'abcd...' ausgecheckt
$ git clean -dff
Lösche SPSS-ng/
Auf Branch main
Ihr Branch ist auf demselben Stand wie 'origin/main'.
nichts zu committen, Arbeitsverzeichnis unverändert
$ git status
Auf Branch main
Ihr Branch ist auf demselben Stand wie 'origin/main'.
nichts zu committen, Arbeitsverzeichnis unverändert
main –> develop
Kommandos:
1234
git checkout develop
git submodule update --init --recursive
git clean -dff
# Nun existiert SPSS-ng, SPSS ist gelöscht!
Hier noch die Mischung aus Ein- und Ausgaben:
1234567891011121314151617181920212223242526
$ git status
Auf Branch main
Ihr Branch ist auf demselben Stand wie 'origin/main'.
nichts zu committen, Arbeitsverzeichnis unverändert
$ git checkout develop
warning: unable to rmdir 'SPSS': Das Verzeichnis ist nicht leer
Zu Branch 'develop' gewechselt
Ihr Branch ist auf demselben Stand wie 'origin/develop'.
$ git submodule update --init --recursive
Submodul-Pfad: 'SPSS-ng': '9fe1...' ausgecheckt
$ git clean -dff
Lösche SPSS/
Auf Branch develop
Ihr Branch ist auf demselben Stand wie 'origin/develop'.
nichts zu committen, Arbeitsverzeichnis unverändert
$ git status
Auf Branch develop
Ihr Branch ist auf demselben Stand wie 'origin/develop'.
nichts zu committen, Arbeitsverzeichnis unverändert