Was in Gitignore schreiben, um Dateien aus dem Verzeichnis data/ (dh results.csv und r.txt) und Dateien aus dem Verzeichnis images/ (image.jpg, image2.jpg, image3.jpg) zu ignorieren?
Wenn ich es übertrage, sollte die Ordnerstruktur im Repository sein:
data/
└── images/
Ich möchte also nur, dass eine leere Ordnerstruktur festgeschrieben wird.
Siehe: Wie füge ich einem Git-Repository ein leeres Verzeichnis hinzu.
– Schmerz
30. Juni 2013 um 10:05 Uhr
Joost van der Laan
Fügen Sie einfach eine Datei hinzu .gitkeep in jedem Ordner, den Sie festschreiben möchten.
Unter Windows tun Sie dies, indem Sie im Ordner mit der rechten Maustaste klicken und Folgendes auswählen: Git bash from here. Geben Sie dann ein: touch .gitkeep
Wie wäre es mit .keep stattdessen? Es ist agnostisch gegenüber Git.
– Asklepios
29. Januar 2014 um 4:35 Uhr
Ja, es spielt eigentlich keine Rolle, wie Sie die Datei nennen
– Joost van der Laan
26. März 2014 um 22:10 Uhr
Die git Präfix gibt jedoch einen Hinweis darauf, warum eine ansonsten sinnlose leere Datei herumliegt.
– Alvaro González
15. April 2014 um 10:49 Uhr
Das Git-Präfix ist für Git-generierte Dateien vorgesehen. Ich bin gerade von diesem anderen Thread hier gelandet, in dem genau dieses Problem diskutiert wird: stackoverflow.com/questions/115983/…
– Josep Valls
29. April 2015 um 20:23 Uhr
Die .git prefix soll bedeuten, dass git es auf besondere Weise verarbeitet, daher ist es verwirrend. Es wäre besser zu verwenden .keep und platzieren Sie Text in einfachem Englisch in der Datei, der den Zweck der Datei erklärt. Obwohl .keep ist nicht sofort ersichtlich, was es bedeutet, das ist in Ordnung, da wir schließlich Programmierer sind, und es ist leicht zu lernen, was es bedeutet, indem man in die Datei schaut. Sobald Sie verstehen, was es bedeutet, ist es ein unvergesslicher Name. Wähle Namen, die kurz und einprägsam sind. Nach einer Weile erlaubt die Kürze es Ihrem Verstand, es schneller zu verarbeiten als .keep_dir_in_git.
– still_dreaming_1
26. Oktober 2015 um 17:06 Uhr
In Git können Sie keine leeren Ordner übergeben, da Git keine Ordner speichert, sondern nur Dateien. Sie müssen eine Platzhalterdatei in diesen Verzeichnissen erstellen, wenn Sie tatsächlich möchten, dass sie “leer” sind (dh Sie haben keinen übertragbaren Inhalt).
Eine andere Lösung dafür ist das Hinzufügen einer README-Datei in ein leeres Verzeichnis. Die Lösung wird hier erklärt
– Guillermo Zacur
11. April 2015 um 16:57 Uhr
Wenn Sie Pangs Kommentar zum obigen OP verpasst haben, siehe stackoverflow.com/questions/115983/…
– Jonathan Ben-Avraham
23. November 2015 um 9:01 Uhr
ddotsenko
Das ist einfach.
erzählen .gitignore alles außer ignorieren .gitignore und die Ordner, die Sie behalten möchten. Setzen .gitignore in Ordner, die Sie im Repo behalten möchten.
Inhalt der obersten .gitignore:
# ignore everything except .gitignore and folders that I care about:
*
!images*
!.gitignore
Im verschachtelten images Ordner das ist dein .gitignore:
Beachten Sie, dass Sie in der .gitignore-Datei die Namen der Ordner buchstabieren müssen, die Sie in dem Ordner, in dem sich diese .gitignore-Datei befindet, nicht ignorieren möchten. Ansonsten werden sie offensichtlich ignoriert.
Ihre Ordner im Repo werden natürlich NICHT leer sein, wie es bei jedem der Fall sein wird .gitignore darin, aber dieser Teil kann ignoriert werden, richtig. 🙂
Eigentlich ist dies die Lösung für die Frage, da es Ihnen den Aufwand erspart, sich mit neuen Dateien in dem betreffenden Ordner zu befassen. Leere Ordner werden oft für temporär erstellte Dateien verwendet, was zu Problemen führen kann, wenn Sie mit Git-Befehlen auf anderen Systemen umgehen, auf denen das Repo ausgecheckt wird.
– Dennis Winter
20. Oktober 2015 um 9:04 Uhr
Ich bin verwirrt, warum würdest du alles außer gitignore ignorieren? Ich versuche zu verstehen, aber es ergibt keinen Sinn. Ich bin schließlich mit gegangen find . -type d -exec touch {}/.gitkeep \; aber es wäre schön, diese Alternative zu verstehen, da sie eine beliebte, positiv bewertete zu sein scheint.
– redfox05
9. Dezember 2015 um 16:36 Uhr
@redfox05 Das OP benötigt mindestens eine Datei in diesen Verzeichnissen, damit git die leere Ordnerstruktur enthält. Wenn wir die .gitignore-Datei nicht unignorieren, ist der Ordner leer und git wird ihn nicht einschließen.
Traditionell, wann immer ich die Verzeichnisstruktur übergeben und leeren wollte, erstelle ich die Struktur und platziere dann in den Blattverzeichnissen eine leere Datei namens empty.txt.
Wenn ich dann Sachen einfüge, die fertig sind, kann ich sie einfach entfernen empty.txt Datei und übergeben Sie die echten Dateien.
dh
Daten/
Bilder/
leere.txt
Was er auch brauchte, war, dass der Inhalt der Ordner von Git ignoriert wurde. Jeder Ordner benötigt eine .gitignore drin. Es ersetzt effektiv empty.txt
– ddotsenko
28. Januar 2013 um 9:57 Uhr
Oder vielleicht .empty.
– still_dreaming_1
26. Oktober 2015 um 17:12 Uhr
David Culp
Sie können einen leeren Commit mit machen git commit --allow-emptyaber das erlaubt Ihnen nicht, eine leere Ordnerstruktur zu übergeben, da git Ordner als Objekte selbst nicht kennt oder sich nicht darum kümmert – nur die Dateien, die sie enthalten.
Was er auch brauchte, war, dass der Inhalt der Ordner von Git ignoriert wurde. Jeder Ordner benötigt eine .gitignore drin. Es ersetzt effektiv empty.txt
– ddotsenko
28. Januar 2013 um 9:57 Uhr
Oder vielleicht .empty.
– still_dreaming_1
26. Oktober 2015 um 17:12 Uhr
Kalle Pokki
Erwägen Sie auch einfach zu tun mkdir -p data/images in Ihrem Makefile, wenn das Verzeichnis während des Builds dort sein muss.
Wenn das nicht gut genug ist, erstellen Sie einfach eine leere Datei in data/images und ignorieren Sie data.
touch data/images/.gitignore
git add data/images/.gitignore
git commit -m "Add empty .gitignore to keep data/images around"
echo data >> .gitignore
git add .gitignore
git commit -m "Add data to .gitignore"
Ich habe den Fehler auf Jenkins erhalten, weil ich einen Komponententest für einen leeren Speicherort hatte und es einwandfrei funktioniert! Danke.
Siehe: Wie füge ich einem Git-Repository ein leeres Verzeichnis hinzu.
– Schmerz
30. Juni 2013 um 10:05 Uhr