{"id":20190,"date":"2021-08-04T07:35:17","date_gmt":"2021-08-04T06:35:17","guid":{"rendered":"https:\/\/www.inovex.de\/blog\/?p=20190"},"modified":"2022-12-02T08:25:28","modified_gmt":"2022-12-02T07:25:28","slug":"migrate-binary-bloat-git-repository","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/","title":{"rendered":"How to Migrate Binary Bloat Out of Your Git Repository"},"content":{"rendered":"<p>In this article I will show you some of the options how you can deal with binary bloat in your Git repository. They each come with unique pros and cons that I will point out. Additionally, you&#8217;ll get suggestions for further information on the topic.<!--more--><\/p>\n<p id=\"907bc591-58b8-48fe-91c9-bfb7e0d06966\" class=\"\"><strong>The situation:<\/strong> A project has several binaries that need to be tracked and versioned along with the code. The binaries are small enough and rarely change, so versioning them directly in Git is appropriate.<\/p>\n<p id=\"2fee7b63-0896-4010-9121-a47da3d687af\" class=\"\">That was some months ago, and in the meantime, the project evolved, binaries grew and changed. Now, you are left with a bloated repository of multiple gigabytes that takes a long time to clone. This is significantly slowing down the CI pipeline, and it is time to fix it.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#Dealing-with-symptoms-directly\" >Dealing with symptoms directly<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#Migrating-to-git-lfs\" >Migrating to git lfs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#Pruning-and-migrating-out-of-Git\" >Pruning and migrating out of Git<\/a><\/li><\/ul><\/nav><\/div>\n<h2 id=\"6a23a05c-f86a-44fc-8c27-1a6fd0debdec\" class=\"\"><span class=\"ez-toc-section\" id=\"Dealing-with-symptoms-directly\"><\/span>Dealing with symptoms directly<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p id=\"4d799a62-5fcf-48b8-b398-24de358368ae\" class=\"\">There are many options to solve this problem, all with unique pros and cons. The simplest solution is dealing only with problematic symptoms like a slow CI pipeline. This can be overcome with one of the following:<\/p>\n<ul id=\"a4d928e3-99ad-4c47-8e1e-00b7fe1b5ea9\" class=\"bulleted-list\">\n<li>Shallow clone <code>git clone --depth 1 URL<\/code>: Limiting the depth of the clone means that history is not pulled.<\/li>\n<\/ul>\n<ul id=\"bbad9cea-fc88-4976-bd08-5786bcaeb16e\" class=\"bulleted-list\">\n<li>Clone without binary files <code>git clone --filter=blob:none URL<\/code>: The filter option is more powerful and can be used to filter only specific files that meet specific criteria. See <a href=\"https:\/\/github.com\/git\/git\/blob\/d98273ba77e1ab9ec755576bc86c716a97bf59d7\/Documentation\/rev-list-options.txt#L869\" target=\"_blank\" rel=\"noopener\">docs<\/a>.<\/li>\n<\/ul>\n<ul id=\"ac2c38f0-fc62-4ded-be0f-e3410dfb99c3\" class=\"bulleted-list\">\n<li>Finally, if the large binary file size is not your problem but the large number of files, you should look into <code>git sparse-checkout<\/code>. See <a href=\"https:\/\/git-scm.com\/docs\/git-sparse-checkout\" target=\"_blank\" rel=\"noopener\">docs<\/a>.<\/li>\n<\/ul>\n<p id=\"42b388e0-b311-4a54-8629-847c1966834f\" class=\"\">But sometimes these workarounds are not enough and you need to rewrite the repo history. Below I will discuss the two solutions that should cover most of the use cases. The first option is migrating to the <code>git lfs<\/code>. The second option is pruning the binaries from the repo history using <code>git filter-repo<\/code> and versioning the binaries in a separate versioning system.<\/p>\n<h2 id=\"95da721f-0685-4fd3-b43c-7862ef86cb85\" class=\"\"><span class=\"ez-toc-section\" id=\"Migrating-to-git-lfs\"><\/span>Migrating to git lfs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p id=\"2f6b6dd0-0b0d-4183-bb39-00efca470d21\" class=\"\">The main advantage of the migration to <code>git lfs<\/code> is that the repo history is left intact and no information is lost. This method is recommended when the binaries are really tightly coupled with the code. This is easily done with the following steps:<\/p>\n<ul id=\"7a4486db-1bb5-4f5e-bb14-8302fe5b5d7e\" class=\"bulleted-list\">\n<li>Install the git-lfs using this <a href=\"https:\/\/github.com\/git-lfs\/git-lfs\/wiki\/Installation\" target=\"_blank\" rel=\"noopener\">guide<\/a> or in conda like so: <code>conda install -c conda-forge git-lfs<\/code><\/li>\n<\/ul>\n<ul id=\"136e92fe-b98f-40ec-990b-4c213d4a09cb\" class=\"bulleted-list\">\n<li>In your repo, run: <code>git lfs install<\/code><\/li>\n<\/ul>\n<ul id=\"c37e7873-1352-4e38-9276-4ed2bfa38eb8\" class=\"bulleted-list\">\n<li>Rewrite history. For example, migrating all bz2 files: <code>git lfs migrate import --include-ref=master --include=\"*.bz2\"<\/code><\/li>\n<\/ul>\n<p id=\"5f882e5c-d19d-459f-9677-eb3f7f128e09\" class=\"\">For more details on how to match your use case see <a href=\"https:\/\/github.com\/git-lfs\/git-lfs\/wiki\/Tutorial#migrating-existing-repository-data-to-lfs\" target=\"_blank\" rel=\"noopener\">this guide<\/a>.<\/p>\n<p id=\"6095bb85-e0ca-484d-82f8-869c3867f3e7\" class=\"\">The downside of using <code>git lfs<\/code> is that it adds more complexity to the workflow of developers. Decisions need to be made: Which files are to be versioned with Git and which with <code>git lfs<\/code>? Do you decide based on the file size or the file format\/extension? The <code>.gitattributes<\/code> file needs to be maintained etc.<\/p>\n<p id=\"27da68da-cd07-4535-8c4f-60b5f5c71462\" class=\"\">You get the gist, there is overhead and nobody likes overhead. But if the binary files are really tightly coupled with the code and need to be versioned, this is the way to go.<\/p>\n<h2 id=\"3b7518d8-e554-4a14-a38b-93a34c4caaa9\" class=\"\"><span class=\"ez-toc-section\" id=\"Pruning-and-migrating-out-of-Git\"><\/span>Pruning and migrating out of Git<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p id=\"fc89422d-550b-4a9a-9200-c6f9b104e10f\" class=\"\">When the binaries are not tightly coupled with the code, there is another solution: simply prune away all the binary files from the repo history and version them in a separate, more appropriate system.<\/p>\n<p id=\"6d57c9d1-ebdf-4313-b89d-492fc83326a2\" class=\"\">The pruning part is simple thanks to the amazing <a href=\"https:\/\/github.com\/newren\/git-filter-repo\"><code>git filter-repo<\/code><\/a> tool. For example, pruning away all the binary files larger than 10 MB can be done using the <a href=\"https:\/\/docs.gitlab.com\/ee\/user\/project\/repository\/reducing_the_repo_size_using_git.html#repository-cleanup\" target=\"_blank\" rel=\"noopener\">guide from GitLab<\/a>. For more elaborate cases please refer to the official <a href=\"https:\/\/htmlpreview.github.io\/?https:\/\/github.com\/newren\/git-filter-repo\/blob\/docs\/html\/git-filter-repo.html#EXAMPLES\" target=\"_blank\" rel=\"noopener\">documentation with examples<\/a>.<\/p>\n<p id=\"f4cc1de1-b07e-40c7-9ce7-61d0622baee9\" class=\"\">After the pruning, your repo should be very lean, and you are free to version or track the binaries outside of Git. For example, in the project I was working on the <a href=\"https:\/\/mlflow.org\/\"><code>mlflow<\/code><\/a> was the appropriate tool we decided on after some trial period. Using the <code>mlflow<\/code> <a href=\"https:\/\/mlflow.org\/docs\/latest\/python_api\/index.html\" target=\"_blank\" rel=\"noopener\">Python API<\/a>, it was easy to track any artefacts and results along with the meta-data which matched the needs of the project well.<\/p>\n<p id=\"03957dad-c639-4d19-b6dd-c83bc9bd6390\" class=\"\">The obvious downside is that you lose the history of the binary files. This was the trade-off we were willing to take as the history of the binary files was not very valuable and we still had access to it in the backups of the repo that we made before the prune.<\/p>\n<p id=\"76ab4e36-2b97-4d4e-94dd-fd399c6d71a0\" class=\"\">I hope this was helpful and you were able to get some useful pointers and links that will help with your Git endeavours.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article I will show you some of the options how you can deal with binary bloat in your Git repository. They each come with unique pros and cons that I will point out. Additionally, you&#8217;ll get suggestions for further information on the topic.<\/p>\n","protected":false},"author":199,"featured_media":31228,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[66,722],"service":[432],"coauthors":[{"id":199,"display_name":"Darjan Salaj","user_nicename":"dsalaj"}],"class_list":["post-20190","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-devops","tag-git","service-devops"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Migrate Binary Bloat Out of Your Git Repository - inovex GmbH<\/title>\n<meta name=\"description\" content=\"This article shows some of the options how you can deal with binary bloat in your Git repository \u2013 with their individual pros and cons.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Migrate Binary Bloat Out of Your Git Repository - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"This article shows some of the options how you can deal with binary bloat in your Git repository \u2013 with their individual pros and cons.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-04T06:35:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-02T07:25:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/git-binary-bloat.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"810\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Darjan Salaj\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/git-binary-bloat-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Darjan Salaj\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Darjan Salaj\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/\"},\"author\":{\"name\":\"Darjan Salaj\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/3eb5d9c43358af38d1e463c024df3da5\"},\"headline\":\"How to Migrate Binary Bloat Out of Your Git Repository\",\"datePublished\":\"2021-08-04T06:35:17+00:00\",\"dateModified\":\"2022-12-02T07:25:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/\"},\"wordCount\":691,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/git-binary-bloat.png\",\"keywords\":[\"DevOps\",\"git\"],\"articleSection\":[\"English Content\",\"General\",\"Infrastructure\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/\",\"name\":\"How to Migrate Binary Bloat Out of Your Git Repository - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/git-binary-bloat.png\",\"datePublished\":\"2021-08-04T06:35:17+00:00\",\"dateModified\":\"2022-12-02T07:25:28+00:00\",\"description\":\"This article shows some of the options how you can deal with binary bloat in your Git repository \u2013 with their individual pros and cons.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/git-binary-bloat.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/git-binary-bloat.png\",\"width\":1440,\"height\":810,\"caption\":\"Binary bloat stuck in a git pipeline\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrate-binary-bloat-git-repository\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Migrate Binary Bloat Out of Your Git Repository\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/3eb5d9c43358af38d1e463c024df3da5\",\"name\":\"Darjan Salaj\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/cropped-profile_dsalaj_2024_hk-96x96.jpg9fcfeffc54642cddbc08ffd0e0638b80\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/cropped-profile_dsalaj_2024_hk-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/cropped-profile_dsalaj_2024_hk-96x96.jpg\",\"caption\":\"Darjan Salaj\"},\"description\":\"As a Data\\\/ML Engineer at inovex, I specialize in building robust pipelines for large-scale data processing in distributed systems. I focus on delivering high-impact data products by prioritizing data quality and master data governance, ensuring that machine learning models are built on a foundation of reliable, well-governed information. I have extensive experience collaborating with SAP customers to modernize their data landscapes and integrate intelligent solutions into their enterprise workflows.\",\"sameAs\":[\"https:\\\/\\\/dsalaj.com\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/darjan-salaj-78599818b\\\/\"],\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/dsalaj\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Migrate Binary Bloat Out of Your Git Repository - inovex GmbH","description":"This article shows some of the options how you can deal with binary bloat in your Git repository \u2013 with their individual pros and cons.","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:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/","og_locale":"de_DE","og_type":"article","og_title":"How to Migrate Binary Bloat Out of Your Git Repository - inovex GmbH","og_description":"This article shows some of the options how you can deal with binary bloat in your Git repository \u2013 with their individual pros and cons.","og_url":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2021-08-04T06:35:17+00:00","article_modified_time":"2022-12-02T07:25:28+00:00","og_image":[{"width":1440,"height":810,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/git-binary-bloat.png","type":"image\/png"}],"author":"Darjan Salaj","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/git-binary-bloat-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Darjan Salaj","Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten","Written by":"Darjan Salaj"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/"},"author":{"name":"Darjan Salaj","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/3eb5d9c43358af38d1e463c024df3da5"},"headline":"How to Migrate Binary Bloat Out of Your Git Repository","datePublished":"2021-08-04T06:35:17+00:00","dateModified":"2022-12-02T07:25:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/"},"wordCount":691,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/git-binary-bloat.png","keywords":["DevOps","git"],"articleSection":["English Content","General","Infrastructure"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/","url":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/","name":"How to Migrate Binary Bloat Out of Your Git Repository - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/git-binary-bloat.png","datePublished":"2021-08-04T06:35:17+00:00","dateModified":"2022-12-02T07:25:28+00:00","description":"This article shows some of the options how you can deal with binary bloat in your Git repository \u2013 with their individual pros and cons.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/git-binary-bloat.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/git-binary-bloat.png","width":1440,"height":810,"caption":"Binary bloat stuck in a git pipeline"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/migrate-binary-bloat-git-repository\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"How to Migrate Binary Bloat Out of Your Git Repository"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/3eb5d9c43358af38d1e463c024df3da5","name":"Darjan Salaj","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/wp-content\/uploads\/cropped-profile_dsalaj_2024_hk-96x96.jpg9fcfeffc54642cddbc08ffd0e0638b80","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/cropped-profile_dsalaj_2024_hk-96x96.jpg","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/cropped-profile_dsalaj_2024_hk-96x96.jpg","caption":"Darjan Salaj"},"description":"As a Data\/ML Engineer at inovex, I specialize in building robust pipelines for large-scale data processing in distributed systems. I focus on delivering high-impact data products by prioritizing data quality and master data governance, ensuring that machine learning models are built on a foundation of reliable, well-governed information. I have extensive experience collaborating with SAP customers to modernize their data landscapes and integrate intelligent solutions into their enterprise workflows.","sameAs":["https:\/\/dsalaj.com\/","https:\/\/www.linkedin.com\/in\/darjan-salaj-78599818b\/"],"url":"https:\/\/www.inovex.de\/de\/blog\/author\/dsalaj\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/20190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=20190"}],"version-history":[{"count":6,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/20190\/revisions"}],"predecessor-version":[{"id":31227,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/20190\/revisions\/31227"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/31228"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=20190"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=20190"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=20190"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=20190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}