2017-06-15 1 views
2

Wie kann ich das Gegenteil von git submodule absorbgitdirs tun? I.e. Verschieben Sie die .git Informationen eines Submoduls aus superproject/.git/modules/<module> und zurück in das Verzeichnis superproject/path/to/<module>/.git?Gegenseite/Rückseite des Git Submoduls absorbgitdirs?

Ich möchte noch <module> Submodul von superproject sein, ich will einfach nicht <module> ‚s .git Verzeichnis Informationen in superproject‘ s .git/modules Verzeichnis.

+0

Mögliche Duplikat oder bezogen auf: https: //stackoverflow.com/questions/1260748/how-do-i-remove-a-submodule – awiebe

Antwort

2

Beachten Sie, dass dies superproject/path/to // zu einem verschachtelten Git Repo machen würde, dessen SHA1 immer noch vom übergeordneten Projekt aufgezeichnet würde.

Um den exakt gleichen Zustand zu halten, können Sie superproject/.git/modules/<module> kopieren und umbenennen, um superproject/path/to/<module> und benennen <module>/<module>-<module>/.git.

Dann können Sie die git submodule deinit verwenden das Submodul zu entfernen:

mv asubmodule asubmodule_tmp 
git submodule deinit -f -- a/submodule  
rm -rf .git/modules/a/submodule 

# if you want to leave it in your working tree 
git rm --cached asubmodule 
mv asubmodule_tmp asubmodule 

Ich möchte noch ein Submodul von superprojec

Dann seine .git Ordner in superproject/.git/modules/<module> wäre sein

submodule absorbgitdirs hinterlässt keine Wahl:

Wenn ein Git-Verzeichnis eines Submoduls innerhalb des Submodul ist, das git-Verzeichnis des Submodul in seine superprojects $GIT_DIR/modules Pfade bewegen und dann das git Verzeichnis und dessen Arbeitsverzeichnis verbinden, indem Setzen Sie die core.worktree und fügen Sie eine .git Datei hinzu, die auf das git-Verzeichnis verweist, das in das superprojects-git-Verzeichnis eingebettet ist.

Ich sehe keine Konfiguration in git config die $GIT_DI R/modules bewegen könnten.

absorbgitdirs wurde in commit f6f8586 für Git 2,12 (Q4 2016) eingeführt
Its tests shows es erwartet GIT_DIR/modules zu verwenden.

Ältere Git (before Git 1.7.8, Oktober 2011) hatte eine .git direkt in den Submodul-Ordner.

+0

Ich könnte an einem Punkt geschworen haben Sie könnten ein Submodul und * nicht * haben es ist '.git' info leben in' superproject/.git/modules/ '. – genpfault

+1

@genpfault Ja: Ältere Versionen von Git hatten das .git direkt im Submodulordner. – VonC

+0

Experimentieren ein bisschen, sieht aus wie das Klonen der Sumpo-Repo, dann 'git submodul add./Path/to/ ' verlässt das '.git'-Verzeichnis des Submoduls in-Place. Aber ein direktes 'git-Submodul fügt die des Moduls hinzu und' 'git'' wird in' superproject/.git/modules' geschrieben. Also Datei move Tanz, den Sie vorgeschlagen, sollte funktionieren, gegeben ein abschließendes 'git submodule fügen ./path/to/ ' zu re-submodule. Vielen Dank! – genpfault

Verwandte Themen