2016-08-03 13 views
0

hinzugefügt wurden Jedes Mal, wenn ich klassische Routine:Git Push ignoriert Verzeichnisse, die über git clone zu projizieren

git add -A 
git commit -am "foo" 
git push remote branch 

Git laden keine Dateien, die über git clone Befehl hinzugefügt wurden.

Zum Beispiel geklont ich kleines Projekt von Github und schloss es als Modul in mein Projekt. Aber als ich es über git auf dem Server bereitgestellt habe, hat es nur das Verzeichnis (Ordner) hochgeladen, aber nichts von innen, der Ordner war leer.

Wie löse ich das und warum das passiert ist?

+0

Haben Sie eine gitinore Datei Ihre dir was weggelassen werden? Wenn Sie mit -A hinzugefügt haben, wurden das Verzeichnis und seine Dateien als in Szene gesetzt angezeigt? – DavidN

+1

Warte, hast du ein anderes Repo innerhalb deines bestehenden lokalen Repos geklont? Wenn ja, ignoriert Git sie. Sie könnten in diesem Fall Submodule verwenden. – DavidN

+0

@DavidN Es gibt keine '.gitignore' Datei. Als ich 'git add -A && git status' benutzte, erinnere ich mich daran, dass diese zwei Verzeichnisse rot gefärbt waren und' '(modifiziert)' sufix, während andere grün waren. – Kunok

Antwort

0

Wenn Sie unter einem Git-Repository sind und eine weitere innerhalb klonen, wird git die man innerhalb ignorieren, wenn die Dinge aus der Eltern eine Zugabe.

Grundsätzlich git prüft, ob jeder hinzugefügte Ordner einen .git Ordner nach innen hat. Wenn Sie den Ordner .git aus dem subklonierten Ordner entfernen, können Sie diesen Ordner normal hinzufügen, als ob Sie die Dateien manuell kopiert hätten.

Wie Sie dies beheben, hängt davon ab, was Sie wollen. Möchten Sie diesen sub-geklonten Repo verfolgen und in der Lage sein, ihn zu ziehen und zu aktualisieren? Wenn ja, dann müssen Sie sich die Submodule git ansehen. Wenn nicht, klonen Sie einfach rm -rf .git und fügen Sie den Ordner hinzu. Aber natürlich sind diese beiden Optionen ziemlich schlecht. Sie sollten erwägen, ein Abhängigkeitsmanagement-Tool (z cocoapods, npm, etc.)

+0

Ja, ich bevorzuge normalerweise 'npm', aber dieses spezielle Plugin hat keine npm oder ähnliches. Auch nach der Verwendung von 'rm -rf .git' wird dieses untergeordnete Verzeichnis immer noch ignoriert. – Kunok

+0

Nachdem Sie '.git' entfernt haben, versuchen Sie' git reset HEAD subfolder' und dann 'git add subfolder'. Diesmal werden alle Inhalte hinzugefügt. – txulu