mkdir topdir
mkdir another-git-Verzeichnis
touch fileC
touch fileD
Git hinzufügen.
git commit -m "Unterdir Init"
CD ..
Touch-DateiA
berühre DateiB
Git hinzufügen.
git commit -m "top-dir init"
git ls-Dateien
// Jetzt können wir sehen, dass FileC und FileD nicht von Top-Level-Git // // verfolgt werden git ls-files -o
// Dies würde uns die Datei C und fileD nicht als nicht gefolgte Dateien anzeigen //
meine Frage ist: Wie können wir "git ls-files -o" machen, um die nicht verfolgten Dateien im Unterverzeichnis anzuzeigen? Warum git verhält sich so, wie ich gits ls-Dateien erwarte, um alle nicht-verfolgten Dateien zu zeigen (auch wenn sie sich in einem anderen Sub-dir-Git befinden)?
Ich weiß, dass ich den Top-Git machen könnte, um die Sub-dir-Dateien mit "git add * /." zu verfolgen ... aber ich bin daran interessiert, warum für die obige Frage zu wissen. Danke!
Verzeichnisstruktur
%Vor%
Ich habe diesen Thread gefunden. Dateien können in Git-Submodulen nicht gefunden werden und diese URL (cn) Ссылка , die erklärt, wie das Problem gelöst wird.
die Lösung:
git rm --cached ein anderes-git-verzeichnis #no schließender Schrägstrich
git addiere ein anderes-git-Verzeichnis /.
git commit
Der 'git rm --cached path / to / sub-dir-oder-sub-modul' sagt dem Top-Verzeichnis, das Unterverzeichnis nicht als Submodul zu behandeln ... ich denke ....
Ein geschachtelter Repo ist standardmäßig untracked .
(Tatsächlich wird der Submodul-Stammordner als GitLink verfolgt, Sondereintrag im Index )
Git erkennt den verschachtelten .git
Repo, und der übergeordnete Repo delegiert jeden Dateistatus an den verschachtelten.
Um sie zu verfolgen, müssen Sie möglicherweise:
git rm --cached mysubmodule
. mysubmodule
steht für den Gitlink, während mysubmodule/
für den Ordner steht, der vom ausgecheckten Submodul erstellt wurde. git add mysubmodule
(hier können Sie einen abschließenden Schrägstrich hinzufügen oder nicht, es spielt keine Rolle) mysubmodule
angezeigt werden. Tags und Links git git-submodules