Ich füge einen neuen Ordner hinzu (eigentlich habe ich ihn aus einem anderen Repo geklont und das vergessen), dann habe ich dort einige Änderungen vorgenommen. Außerdem habe ich an anderen Stellen eine Menge Änderungen vorgenommen, als ich versucht habe, git add zu machen
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# (commit or discard the untracked or modified content in submodules)
#
# modified: protected/ext/SpecificFolder (modified content)
#
Dann erinnere ich mich, dass es vielleicht einen .git Ordner gab (weil ich vorher dort git geklont habe). Ich ging zu diesem Ordner und entferne auch nicht benötigte Dateien (Ordner) und den .git-Ordner. Ich habe den Git-Status überprüft, nichts Ungewöhnliches. Dann festschreiben und auschecken zu einem anderen Zweig und plötzlich stelle ich fest, dass dieser Ordner nicht zum letzten Festschreiben hinzugefügt wurde. Tatsächlich wurde ein Ordner hinzugefügt, die darin enthaltenen Dateien wurden jedoch ignoriert. Nun, auch wenn ich versuche, git add
für diesen Ordner nichts zu tun , passiert nichts und git status
es werden keine Änderungen angezeigt :(
Was kann ich tun ?
.git
Repository hatte und Dateien zu diesem Repository anstelle des Repositorys im Hauptordner hinzugefügt wurden. Selbst in der Git-Benutzeroberfläche wurde dieser Unterordner als Datei und nicht als Ordner angezeigt.Antworten:
Git verfolgt keine Verzeichnisse; aber nur die Dateien in ihnen.
Es hört sich so an, als hätten Sie ein Ignoriermuster, das dazu führt, dass
add
Sie nichts tun. Sie können ignorierte Dateien mitgit status --ignored
; Sie können dann mit verfolgt werdengit add --force protected/ext/SpecificFolder
quelle
git status --ignored
, irgendwie denke ich, dass es mit dem Submodul verbunden istGit verfolgt keine leeren Verzeichnisse. Wenn Sie ein Projekt mit mehreren Ebenen von Unterverzeichnissen haben, verfolgt git tatsächlich die Verzeichnisse mit den darin enthaltenen Dateien. Wenn nicht, dann wäre es ein einziges flaches Repository von Dateien.
quelle
Ich habe genau das getan, was dieser Benutzer getan hat: Ein vorhandenes Git-Repository in einem anderen hinzufügen.
Das Symptom war, dass git dieses Verzeichnis als Datei erkannte und daher die Dateien des Verzeichnisses nicht hinzufügen konnte.
Um diese Frage zu lösen, habe ich den
.git
Ordner im Ordner gelöscht , diesen Ordner in ein anderes Verzeichnis verschoben, den Index gelöscht, das Verzeichnis entfernt, in dem sich mein Repository befindet, und dann konnte ich das Verzeichnis ordnungsgemäß hinzufügen.Die Moral lautet: Fügen Sie kein Repository in einem anderen hinzu.
quelle
git rm --cached path_to_submodule
Hier gibt es eine bessere Antwort: .gitkeep usage
TL; DR, fügen Sie eine
.gitkeep
Datei zu Ihrem leeren Verzeichnis hinzuquelle
Versuchen Sie, eine Datei in diesem Verzeichnis hinzuzufügen.
Wenn Sie eine Ausgabe wie die folgende sehen:
In einem Ihrer Gitignores gibt es eine Regel, die Sie daran hindert, dieses Verzeichnis hinzuzufügen.
quelle
Ich fand ähnliche Nebenwirkungen, nachdem ich versucht hatte, ein früheres Submodul in einen normalen Unterordner umzuwandeln.
Das erneute Hinzufügen des Ordners, den ich konvertieren wollte, schien zu funktionieren, aber es stellte sich heraus, dass die darin enthaltenen Dateien nicht wirklich hinzugefügt wurden.
Der Versuch, eine Datei spezifisch hinzuzufügen, warnte mich besser
quelle