Leere Ordnerstruktur übergeben (mit Git) [duplicate]

Lesezeit: 5 Minuten

Leere Ordnerstruktur ubergeben mit Git duplicate
Иван Бишевац

Ich habe ein Datenverzeichnis im Stammverzeichnis des Projekts. Es hat ein Bildverzeichnis und einige Dateien. Hier ist ein Beispiel:

data
├── images
│   ├── image1.jpg
│   ├── image2.jpg
│   └── image3.jpg 
├── results.csv
└── r.txt

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


Leere Ordnerstruktur ubergeben mit Git duplicate
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

1647270489 39 Leere Ordnerstruktur ubergeben mit Git duplicate
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:

# ignore everything except .gitignore
*
!.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.

    – Jannie Theunissen

    16. Mai 2016 um 18:14 Uhr

Erstellen Sie rekursiv .gitkeep-Dateien

find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \;

Leere Ordnerstruktur ubergeben mit Git duplicate
Karl Nikol

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

1647270490 664 Leere Ordnerstruktur ubergeben mit Git duplicate
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

1647270491 758 Leere Ordnerstruktur ubergeben mit Git duplicate
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.

    – Sandip Subedi

    23. August 2017 um 21:48 Uhr

1002040cookie-checkLeere Ordnerstruktur übergeben (mit Git) [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy