{"id":1614,"date":"2017-07-13T01:17:47","date_gmt":"2017-07-12T23:17:47","guid":{"rendered":"https:\/\/vielhuber.de\/?p=1614"},"modified":"2017-09-02T02:56:36","modified_gmt":"2017-09-02T00:56:36","slug":"bitbucket-ordner-aus-git-historie-loeschen","status":"publish","type":"post","link":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/","title":{"rendered":"Bitbucket: Ordner aus Git-Historie l\u00f6schen"},"content":{"rendered":"<p>Beim Hosting von Git auf <a href=\"https:\/\/bitbucket.org\" target=\"_blank\" rel=\"noopener\">Bitbucket<\/a> gibt es ein Hard Limit von 2 GB\u00a0\u2013 wenn dieses \u00fcberschritten wird, hat man lediglich Read-Only-Access auf das Repository. Um das zu verhindern, entfernt man beispielsweise r\u00fcckwirkend gro\u00dfe Ordner oder Dateien aus seinen Commits. Doch auch in anderen F\u00e4llen (wenn Zugangsdaten in die History gelangt sind oder mal wieder node_modules auf master gerutscht ist) muss man nachtr\u00e4glich die Historie von Git entgegen seiner Natur r\u00fcckwirkend manipulieren.<\/p>\n<p><!--more--><\/p>\n<p>Bitbucket hat dazu selbst einen ausf\u00fchrlichen\u00a0<a href=\"https:\/\/confluence.atlassian.com\/bitbucket\/reduce-repository-size-321848262.html\" target=\"_blank\" rel=\"noopener\">Artikel<\/a>\u00a0verfasst. Um das Ganze an einem Fall durchzuspielen, legen wir zun\u00e4chst ein neues Repository an:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/677.png\" alt=\"bitbucket history clean\" \/><\/p>\n<p>Dann klonen wir das Repository in einen leeren Ordner auf den lokalen Rechner:<\/p>\n<p class=\"githubgist\" data-gist-file=\"1.sh\">6ab7686fc508ce87c52b10bb5d01ee51<\/p>\n<p>Nun erzeugen wir zwei Unterordner mit Dateien zuf\u00e4lligen Inhalts:<\/p>\n<p class=\"githubgist\" data-gist-file=\"2.sh\">6ab7686fc508ce87c52b10bb5d01ee51<\/p>\n<p>Wir pushen nun auf master:<\/p>\n<p class=\"githubgist\" data-gist-file=\"3.sh\">6ab7686fc508ce87c52b10bb5d01ee51<\/p>\n<p>Nun haben wir das Hard Limit von 2 GB auf Bitbucket fast erreicht:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/611.png\" alt=\"bitbucket history clean\" \/><\/p>\n<p>Auch lokal k\u00f6nnen wir das pr\u00fcfen (siehe \"size-pack\"):<\/p>\n<p class=\"githubgist\" data-gist-file=\"4.sh\">6ab7686fc508ce87c52b10bb5d01ee51<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/720.png\" alt=\"bitbucket history clean\" \/><\/p>\n<p>Nun besteht die Aufgabe darin, \"foo\" r\u00fcckwirkend aus dem Repository zu entfernen, um dessen Gr\u00f6\u00dfe zu halbieren. Dazu bearbeiten wir\u00a0zun\u00e4chst den aktuellen HEAD und schreiben den Ordner in die gitignore:<\/p>\n<p class=\"githubgist\" data-gist-file=\"5.sh\">6ab7686fc508ce87c52b10bb5d01ee51<\/p>\n<p>Schlie\u00dflich entfernen wir mit Hilfe des <a href=\"https:\/\/rtyley.github.io\/bfg-repo-cleaner\/\" target=\"_blank\" rel=\"noopener\">BFG Repo Cleaner<\/a>\u00a0den Ordner (BFG ben\u00f6tigt als Systemvoraussetzung eine aktuelle\u00a0<a href=\"https:\/\/www.java.com\/en\/download\/manual.jsp\" target=\"_blank\" rel=\"noopener\">JRE<\/a>\u00a0auf dem System):<\/p>\n<p class=\"githubgist\" data-gist-file=\"6.sh\">6ab7686fc508ce87c52b10bb5d01ee51<\/p>\n<p>Wir sehen nun lokal das Resultat:<\/p>\n<p class=\"githubgist\" data-gist-file=\"7.sh\">6ab7686fc508ce87c52b10bb5d01ee51<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/880.png\" alt=\"bitbucket history clean\" \/><\/p>\n<p>Doch auf Bitbucket hat sich die Repository-Gr\u00f6\u00dfe noch nicht ver\u00e4ndert, da der Garbage-Collector remote noch nicht ausgef\u00fchrt wurde und bitbucket nicht bei jedem push ein \"git gc\" ausf\u00fchrt:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/611.png\" alt=\"bitbucket history clean\" \/><\/p>\n<p>Dies best\u00e4tigt auch der Support:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/998.png\" alt=\"bitbucket history clean\" \/><\/p>\n<p>Demnach sendet man am besten direkt an <a href=\"mailto:support@bitbucket.org\">support@bitbucket.org<\/a> eine Anfrage, manuell \"git gc\" im Repository auszuf\u00fchren. Nach kurzer Zeit geschah dies auch durch das Support-Team:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/791.png\" alt=\"bitbucket history clean\" \/><\/p>\n<p>Zieht man sich nun \"frisch\" das Repository auf einen anderen Rechner, landen auch nur 0,9 GB auf der Platte. Hat jemand die 1,8 GB Version noch lokal vorgehalten, gen\u00fcgt ein \"git pull\" gefolgt von \"git gc\".<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beim Hosting von Git auf Bitbucket gibt es ein Hard Limit von 2 GB\u00a0\u2013 wenn dieses \u00fcberschritten wird, hat man lediglich Read-Only-Access auf das Repository. Um das zu verhindern, entfernt man beispielsweise r\u00fcckwirkend gro\u00dfe Ordner oder Dateien aus seinen Commits. Doch auch in anderen F\u00e4llen (wenn Zugangsdaten in die History gelangt sind oder mal wieder [&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-1614","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-blog"},"acf":[],"yoast_head":"<title>Bitbucket: Ordner aus Git-Historie l\u00f6schen &#060; Vielhuber David<\/title>\n<meta name=\"description\" content=\"Beim Hosting von Git auf Bitbucket gibt es ein Hard Limit von 2 GB\u00a0\u2013 wenn dieses \u00fcberschritten wird, hat man lediglich Read-Only-Access auf das\" \/>\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\/bitbucket-ordner-aus-git-historie-loeschen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bitbucket: Ordner aus Git-Historie l\u00f6schen &#060; Vielhuber David\" \/>\n<meta property=\"og:description\" content=\"Beim Hosting von Git auf Bitbucket gibt es ein Hard Limit von 2 GB\u00a0\u2013 wenn dieses \u00fcberschritten wird, hat man lediglich Read-Only-Access auf das\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/\" \/>\n<meta property=\"og:site_name\" content=\"Vielhuber David\" \/>\n<meta property=\"article:published_time\" content=\"2017-07-12T23:17:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-09-02T00:56:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vielhuber.de\/wp-content\/uploads\/677.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=\"2\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/\"},\"author\":{\"name\":\"David\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"headline\":\"Bitbucket: Ordner aus Git-Historie l\u00f6schen\",\"datePublished\":\"2017-07-12T23:17:47+00:00\",\"dateModified\":\"2017-09-02T00:56:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/\"},\"wordCount\":377,\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"image\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/677.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/\",\"name\":\"Bitbucket: Ordner aus Git-Historie l\u00f6schen &#060; Vielhuber David\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/677.png\",\"datePublished\":\"2017-07-12T23:17:47+00:00\",\"dateModified\":\"2017-09-02T00:56:36+00:00\",\"description\":\"Beim Hosting von Git auf Bitbucket gibt es ein Hard Limit von 2 GB\u00a0\u2013 wenn dieses \u00fcberschritten wird, hat man lediglich Read-Only-Access auf das\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/677.png\",\"contentUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/677.png\",\"width\":617,\"height\":371},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/bitbucket-ordner-aus-git-historie-loeschen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vielhuber.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bitbucket: Ordner aus Git-Historie l\u00f6schen\"}]},{\"@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":"Bitbucket: Ordner aus Git-Historie l\u00f6schen &#060; Vielhuber David","description":"Beim Hosting von Git auf Bitbucket gibt es ein Hard Limit von 2 GB\u00a0\u2013 wenn dieses \u00fcberschritten wird, hat man lediglich Read-Only-Access auf das","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\/bitbucket-ordner-aus-git-historie-loeschen\/","og_locale":"de_DE","og_type":"article","og_title":"Bitbucket: Ordner aus Git-Historie l\u00f6schen &#060; Vielhuber David","og_description":"Beim Hosting von Git auf Bitbucket gibt es ein Hard Limit von 2 GB\u00a0\u2013 wenn dieses \u00fcberschritten wird, hat man lediglich Read-Only-Access auf das","og_url":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/","og_site_name":"Vielhuber David","article_published_time":"2017-07-12T23:17:47+00:00","article_modified_time":"2017-09-02T00:56:36+00:00","og_image":[{"url":"https:\/\/vielhuber.de\/wp-content\/uploads\/677.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":"2\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/#article","isPartOf":{"@id":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/"},"author":{"name":"David","@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"headline":"Bitbucket: Ordner aus Git-Historie l\u00f6schen","datePublished":"2017-07-12T23:17:47+00:00","dateModified":"2017-09-02T00:56:36+00:00","mainEntityOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/"},"wordCount":377,"publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"image":{"@id":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/#primaryimage"},"thumbnailUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/677.png","articleSection":["Blog"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/","url":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/","name":"Bitbucket: Ordner aus Git-Historie l\u00f6schen &#060; Vielhuber David","isPartOf":{"@id":"https:\/\/vielhuber.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/#primaryimage"},"image":{"@id":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/#primaryimage"},"thumbnailUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/677.png","datePublished":"2017-07-12T23:17:47+00:00","dateModified":"2017-09-02T00:56:36+00:00","description":"Beim Hosting von Git auf Bitbucket gibt es ein Hard Limit von 2 GB\u00a0\u2013 wenn dieses \u00fcberschritten wird, hat man lediglich Read-Only-Access auf das","breadcrumb":{"@id":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/#primaryimage","url":"https:\/\/vielhuber.de\/wp-content\/uploads\/677.png","contentUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/677.png","width":617,"height":371},{"@type":"BreadcrumbList","@id":"https:\/\/vielhuber.de\/blog\/bitbucket-ordner-aus-git-historie-loeschen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vielhuber.de\/"},{"@type":"ListItem","position":2,"name":"Bitbucket: Ordner aus Git-Historie l\u00f6schen"}]},{"@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\/fr\/wp-json\/wp\/v2\/posts\/1614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/comments?post=1614"}],"version-history":[{"count":16,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/posts\/1614\/revisions"}],"predecessor-version":[{"id":1695,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/posts\/1614\/revisions\/1695"}],"wp:attachment":[{"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/media?parent=1614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/categories?post=1614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vielhuber.de\/fr\/wp-json\/wp\/v2\/tags?post=1614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}