Git alle Unterverzeichnisse hinzufügen

84

Ich habe Probleme beim Hinzufügen eines Ordners und aller seiner Unterverzeichnisse zu meinem Git-Repository. Ich erkannte, dass dies eine sehr beliebte Frage ist, nachdem ich ein bisschen gegoogelt hatte, und ich habe jeden Vorschlag ohne Glück ausprobiert, insbesondere den Vorschlag von der Manpage auf git-add . Ich habe es sogar git add -Aohne Erfolg versucht . Nehmen wir der Einfachheit halber an, ich habe mein Git-Repository als initialisiert Dir1. Dann habe ich folgende Verzeichnisstruktur von Dateien.

Dir1/file1-1.txt
Dir1/file1-2.txt
Dir1/Dir2/file2-1.txt
Dir1/Dir2/Dir3/file3-1.txt

Meine realen Dateien haben Unterverzeichnisse mit einer Tiefe von 5 bis 6 Ebenen. Gibt es also einen git-Befehl, um alle Dateien in jedem Unterverzeichnis zu meinem Repository hinzuzufügen? Im Moment, wenn ich den Vorschlag von der Manpage aus mache, git add Dir1/\*kann ich ihn Dir2in meinem Repo sehen, aber er wird als grüner Ordner angezeigt und ich kann ihn nicht öffnen, was mich glauben lässt, dass nicht alle Dateien / Ordner in Dir2erhalten wurden hinzugefügt. Jede Hilfe wäre sehr dankbar. Ich bin ein neuer Git-Benutzer (weniger als eine Woche). Versuchen Sie also, Ihre Anweisungen auf Anfängerniveau zu halten.

Josh Bradley
quelle
2
git addeines Verzeichnisses ist automatisch rekursiv. Die Verwendung git add .in der obersten Ebene des Repos sollte alles dort hinzufügen. Wenn nicht, .gitignoreist im Spiel (lokal oder global).
Nevik Rehnel
haben Sie überprüfen .gitignore? Irgendwie werden deine Verzeichnisse vielleicht ignoriert.
ogzd
2
Was ist die Ausgabe von git status --ignored?
Chronial
1
Nur um anderen zu helfen, die diese Frage sehen: Wenn die von Ihnen erstellten Verzeichnisse keine Dateien enthalten, werden sie nicht von hinzugefügt. git add .Sie müssen einige Dateien in die Verzeichnisse einfügen, damit git sie verfolgt.
Gonephishing

Antworten:

106

Machen,

git add .

während im Stammverzeichnis des Repositorys. Es wird alles hinzufügen. In git add *diesem Fall werden nur die Dateipunkte hinzugefügt *. Der einzelne Punkt bezieht sich auf das Verzeichnis.

Wenn Ihr Verzeichnis oder Ihre Datei nach dem obigen Befehl nicht zu git index / repo hinzugefügt wurde, müssen Sie überprüfen, ob es in der .gitignore- Datei von git als ignoriert markiert ist .

Kalle Pokki
quelle
8
Hab es gerade versucht. Funktioniert immer noch nicht. Ich habe git hinzugefügt. git commit git push origin master Vermisse ich etwas?
Josh Bradley
4
Angenommen, Ihre Dateien befinden sich unter Dir1, sollten Sie Folgendes tun: cd Dir1; git init; git add . ; git commit;Es ist nichts anderes erforderlich. Wenn .gitignore Dateien in einem Verzeichnis ignoriert und sie dennoch hinzufügen möchte, müssen Sie dies git add -f .stattdessen tun git add ..
Kalle Pokki
5
Ich habe versucht "git add". aber es hat nicht funktioniert. Am nächsten Tag ging ich wieder hinein und versuchte es und alles "funktionierte einfach", also danke! Es muss einer dieser Mitternachtswanzen gewesen sein, die verschwunden sind, wenn das Licht wieder an ist.
Josh Bradley
2
git hinzufügen. funktioniert nicht und fügt die Unterverzeichnisse und ihren Inhalt nicht rekursiv hinzu.
Weiß nicht viel
Möglicherweise müssen Sie ein neues Befehlsfenster öffnen, damit dies konsistent funktioniert.
Käfig Rattler
16

Einfache Lösung:

git rm --cached directory
git add directory
Shashwat Gupta
quelle
13

Sie können auch auf Probleme stoßen, wenn ein Unterverzeichnis selbst ein Git-Repository ist, dh ein Git-Verzeichnis hat ls -a.

Zum Entfernen gehen Sie in das Unterverzeichnis und rm .git -rf.

PaulB
quelle
2
Unter OSX 10.11.6 Terminal verwenden: rm -rf .git
Sébastien REMY
2
Das Gleiche, nicht wahr?
PaulB
5

Auch kämpfte, aber es richtig zu tippen

git add -f ./JS/*

Dabei war JS mein Ordnername, der Unterordner und Dateien enthält

Ian Wright
quelle
2
Es kann ignorierte Dateien hinzufügen und ein Chaos im Repository verursachen.
Changtung
1

Ich kann nicht sicher sagen, ob dies der Fall ist, aber was für mich ein Problem zu sein schien, war, dass .gitignore-Dateien in einigen Unterverzeichnissen vorhanden waren. Auch dies kann ich nicht garantieren, aber alles hat funktioniert, nachdem diese gelöscht wurden.

Adam Ruhl
quelle
0

Wahrscheinlich .gitignore Datei s sind im Spiel. Beachten Sie, dass Gitignore-Dateien nicht nur auf der Stammebene des Repos, sondern auch auf jeder Unterebene angezeigt werden können. Sie können dies von der Stammebene aus versuchen, um sie zu finden:

finden . -name ".gitignore"

Überprüfen Sie anschließend die Ergebnisse, um festzustellen, welche möglicherweise das Hinzufügen Ihrer Unterverzeichnisse verhindern.

Möglicherweise sind auch Submodule beteiligt. Überprüfen Sie die fehlerhaften Verzeichnisse auf ".gitmodules" -Dateien.

Samato
quelle
0

Ich habe dieses Problem schon einmal gesehen, als der Name des (Unter-) Ordners, den ich hinzufügen wollte, mit "_Something_" begann.

Ich habe die Unterstriche entfernt und es hat funktioniert. Überprüfen Sie, ob Ihr Ordner Zeichen enthält, die möglicherweise Probleme verursachen.

Ash Kumar
quelle