{"id":1718,"date":"2017-09-22T00:37:08","date_gmt":"2017-09-21T22:37:08","guid":{"rendered":"https:\/\/vielhuber.de\/?p=1718"},"modified":"2017-09-24T21:45:05","modified_gmt":"2017-09-24T19:45:05","slug":"git-und-leere-ordner","status":"publish","type":"post","link":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/","title":{"rendered":"Git und leere Ordner"},"content":{"rendered":"<p>Da <a href=\"https:\/\/git-scm.com\/\" target=\"_blank\" rel=\"noopener\">Git<\/a> bekanntlich keine Ordner, sondern nur Dateien kennt, landen leere Ordnerstrukturen nicht im Repository. Da viele Frameworks und Projekte diese aber zwingend ben\u00f6tigen, sollten sie dort aber landen. Eine g\u00e4ngige Praxis ist es, sog. Platzhalter-Dateien (oft .gitkeep genannt) anzulegen, die implizit die Ordnerstruktur vorgeben. Diese Dateien kann man leicht erzeugen und zus\u00e4tzlich falls gew\u00fcnscht daf\u00fcr sorgen, dass andere Dateien in den Ordnern ignoriert werden.<\/p>\n<p><!--more--><\/p>\n<p>Zun\u00e4chst erstellen wir ein Testrepository und legen einige Unterordner an:<\/p>\n<p class=\"githubgist\" data-gist-file=\"1.sh\">434e6616f335599d241482f169f68f1b<\/p>\n<p>Wir haben nun folgende Ordnerstruktur:<\/p>\n<p class=\"githubgist\" data-gist-file=\"2.sh\">434e6616f335599d241482f169f68f1b<\/p>\n<p>Ein <strong>git status -u<\/strong> zeigt uns wie erwartet keine \u00c4nderungen an:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/198.png\" alt=\"Git und leere Ordner\" \/><\/p>\n<p>Wir erzeugen nun mit Hilfe von <a href=\"https:\/\/linux.die.net\/man\/1\/find\" target=\"_blank\" rel=\"noopener\">find<\/a> die Platzhalter-Dateien an allen ben\u00f6tigten Stellen:<\/p>\n<p class=\"githubgist\" data-gist-file=\"3.sh\">434e6616f335599d241482f169f68f1b<\/p>\n<p>Wir haben nun folgende Ordner-\/Dateistruktur erhalten:<\/p>\n<p class=\"githubgist\" data-gist-file=\"4.sh\">434e6616f335599d241482f169f68f1b<\/p>\n<p>Ein <strong>git status -u<\/strong> zeigt uns nun, dass alle Ordner (implizit) im Repository landen:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/219.png\" alt=\"Git und leere Ordner\" \/><\/p>\n<p>Wollen wir nun noch erreichen, dass zwar die Ordnerstruktur stets im Repository landet, jedoch nicht etwaige Dateien (abgesehen von den Platzhalter-Dateien), legen wir eine gitignore an:<\/p>\n<p class=\"githubgist\" data-gist-file=\"5.sh\">434e6616f335599d241482f169f68f1b<\/p>\n<p>Dabei machen wir Gebrauch von der <a href=\"https:\/\/git-scm.com\/docs\/gitignore#_pattern_format\" target=\"_blank\" rel=\"noopener\">Doppelstern-Syntax<\/a>:<\/p>\n<p class=\"githubgist\" data-gist-file=\".gitignore\">434e6616f335599d241482f169f68f1b<\/p>\n<p>Die erste Zeile ignoriert rekursiv alle Dateien und Ordner (auf beliebiger Ebene) im Ordner \"foo\", die zweite Zeile exkludiert von dieser Regel rekursiv alle Ordner (auf beliebiger Ebene) und die dritte Zeile exkludiert alle .gitkeep-Dateien (auf beliebiger Ebene).<\/p>\n<p>Nun legen wir einige Testdateien an:<\/p>\n<p class=\"githubgist\" data-gist-file=\"6.sh\">434e6616f335599d241482f169f68f1b<\/p>\n<p>Ein <strong>git status -u<\/strong> zeigt uns nun das gew\u00fcnschte Resultat:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/508.png\" alt=\"Git und leere Ordner\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Da Git bekanntlich keine Ordner, sondern nur Dateien kennt, landen leere Ordnerstrukturen nicht im Repository. Da viele Frameworks und Projekte diese aber zwingend ben\u00f6tigen, sollten sie dort aber landen. Eine g\u00e4ngige Praxis ist es, sog. Platzhalter-Dateien (oft .gitkeep genannt) anzulegen, die implizit die Ordnerstruktur vorgeben. Diese Dateien kann man leicht erzeugen und zus\u00e4tzlich falls gew\u00fcnscht [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"gtbabel_prevent_lngs":"","gtbabel_alt_lng":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-1718","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-blog"},"acf":[],"yoast_head":"<title>Git und leere Ordner &#060; Vielhuber David<\/title>\n<meta name=\"description\" content=\"Da Git bekanntlich keine Ordner, sondern nur Dateien kennt, landen leere Ordnerstrukturen nicht im Repository. Da viele Frameworks und Projekte diese ...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Git und leere Ordner &#060; Vielhuber David\" \/>\n<meta property=\"og:description\" content=\"Da Git bekanntlich keine Ordner, sondern nur Dateien kennt, landen leere Ordnerstrukturen nicht im Repository. Da viele Frameworks und Projekte diese aber\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/\" \/>\n<meta property=\"og:site_name\" content=\"Vielhuber David\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-21T22:37:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-09-24T19:45:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vielhuber.de\/wp-content\/uploads\/198.png\" \/>\n<meta name=\"author\" content=\"David\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:site\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"David\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"1\u00a0Minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/\"},\"author\":{\"name\":\"David\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"headline\":\"Git und leere Ordner\",\"datePublished\":\"2017-09-21T22:37:08+00:00\",\"dateModified\":\"2017-09-24T19:45:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/\"},\"wordCount\":273,\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"image\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/198.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/\",\"name\":\"Git und leere Ordner &#060; Vielhuber David\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/198.png\",\"datePublished\":\"2017-09-21T22:37:08+00:00\",\"dateModified\":\"2017-09-24T19:45:05+00:00\",\"description\":\"Da Git bekanntlich keine Ordner, sondern nur Dateien kennt, landen leere Ordnerstrukturen nicht im Repository. Da viele Frameworks und Projekte diese aber\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/198.png\",\"contentUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/198.png\",\"width\":406,\"height\":90},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-und-leere-ordner\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vielhuber.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Git und leere Ordner\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/\",\"name\":\"Vielhuber David\",\"description\":\"Full-Stack Developer\",\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vielhuber.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\",\"name\":\"David\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"contentUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"width\":700,\"height\":552,\"caption\":\"David\"},\"logo\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/vielhuber\"]}]}<\/script>","yoast_head_json":{"title":"Git und leere Ordner &#060; Vielhuber David","description":"Da Git bekanntlich keine Ordner, sondern nur Dateien kennt, landen leere Ordnerstrukturen nicht im Repository. Da viele Frameworks und Projekte diese ...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/","og_locale":"de_DE","og_type":"article","og_title":"Git und leere Ordner &#060; Vielhuber David","og_description":"Da Git bekanntlich keine Ordner, sondern nur Dateien kennt, landen leere Ordnerstrukturen nicht im Repository. Da viele Frameworks und Projekte diese aber","og_url":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/","og_site_name":"Vielhuber David","article_published_time":"2017-09-21T22:37:08+00:00","article_modified_time":"2017-09-24T19:45:05+00:00","og_image":[{"url":"https:\/\/vielhuber.de\/wp-content\/uploads\/198.png","type":"","width":"","height":""}],"author":"David","twitter_card":"summary_large_image","twitter_creator":"@vielhuber","twitter_site":"@vielhuber","twitter_misc":{"Verfasst von":"David","Gesch\u00e4tzte Lesezeit":"1\u00a0Minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/#article","isPartOf":{"@id":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/"},"author":{"name":"David","@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"headline":"Git und leere Ordner","datePublished":"2017-09-21T22:37:08+00:00","dateModified":"2017-09-24T19:45:05+00:00","mainEntityOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/"},"wordCount":273,"publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"image":{"@id":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/#primaryimage"},"thumbnailUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/198.png","articleSection":["Blog"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/","url":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/","name":"Git und leere Ordner &#060; Vielhuber David","isPartOf":{"@id":"https:\/\/vielhuber.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/#primaryimage"},"image":{"@id":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/#primaryimage"},"thumbnailUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/198.png","datePublished":"2017-09-21T22:37:08+00:00","dateModified":"2017-09-24T19:45:05+00:00","description":"Da Git bekanntlich keine Ordner, sondern nur Dateien kennt, landen leere Ordnerstrukturen nicht im Repository. Da viele Frameworks und Projekte diese aber","breadcrumb":{"@id":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/#primaryimage","url":"https:\/\/vielhuber.de\/wp-content\/uploads\/198.png","contentUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/198.png","width":406,"height":90},{"@type":"BreadcrumbList","@id":"https:\/\/vielhuber.de\/blog\/git-und-leere-ordner\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vielhuber.de\/"},{"@type":"ListItem","position":2,"name":"Git und leere Ordner"}]},{"@type":"WebSite","@id":"https:\/\/vielhuber.de\/#website","url":"https:\/\/vielhuber.de\/","name":"Vielhuber David","description":"Full-Stack Developer","publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vielhuber.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef","name":"David","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","url":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","contentUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","width":700,"height":552,"caption":"David"},"logo":{"@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg"},"sameAs":["https:\/\/x.com\/vielhuber"]}]}},"_links":{"self":[{"href":"https:\/\/vielhuber.de\/zu\/wp-json\/wp\/v2\/posts\/1718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vielhuber.de\/zu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vielhuber.de\/zu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/zu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/zu\/wp-json\/wp\/v2\/comments?post=1718"}],"version-history":[{"count":12,"href":"https:\/\/vielhuber.de\/zu\/wp-json\/wp\/v2\/posts\/1718\/revisions"}],"predecessor-version":[{"id":1733,"href":"https:\/\/vielhuber.de\/zu\/wp-json\/wp\/v2\/posts\/1718\/revisions\/1733"}],"wp:attachment":[{"href":"https:\/\/vielhuber.de\/zu\/wp-json\/wp\/v2\/media?parent=1718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vielhuber.de\/zu\/wp-json\/wp\/v2\/categories?post=1718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vielhuber.de\/zu\/wp-json\/wp\/v2\/tags?post=1718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}