Wie man git auf oberster Ebene erstellt, um alle Dateien unter einem anderen Unterverzeichnis git zu verfolgen

8

Befehlssequenz

  

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%

update (26 Jun)

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 ....

    
ken 25.06.2010, 02:53
quelle

1 Antwort

1

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:

  • entferne den gitlink: git rm --cached mysubmodule .
    Beachten Sie das Fehlen eines abschließenden Schrägstrichs: mysubmodule steht für den Gitlink, während mysubmodule/ für den Ordner steht, der vom ausgecheckten Submodul erstellt wurde.
  • fügen Sie es zurück in den Index des übergeordneten Repos: git add mysubmodule (hier können Sie einen abschließenden Schrägstrich hinzufügen oder nicht, es spielt keine Rolle)
  • Übernimmt die neuen Dateien, die hinzugefügt und in mysubmodule angezeigt werden.
VonC 25.06.2010 06:47
quelle

Tags und Links