{"id":10424,"date":"2026-09-17T12:30:00","date_gmt":"2026-09-17T10:30:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10424"},"modified":"2026-09-09T17:08:58","modified_gmt":"2026-09-09T15:08:58","slug":"zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/","title":{"rendered":"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt"},"content":{"rendered":"<p>Zwei Ausgaben derselben Konfiguration zu vergleichen ist der schnellste Weg herauszufinden, was jemand ge\u00e4ndert hat, und der erste Versuch liefert fast immer ein unbrauchbares Ergebnis. Es sind mehrere hundert abweichende Zeilen, von denen eine z\u00e4hlt und der Rest das Dateiformat mit sich selbst reden l\u00e4sst.<\/p>\n<p>Alles Folgende handelt vom Abstand zwischen diesen beiden Zahlen &#8211; wovon er gef\u00fcllt ist, wie er verschwindet und was auch danach unsichtbar bleibt.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/vergleichsebenen-de.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Dieselbe \u00c4nderung an einem Wort, gezeigt auf Zeilen-, Wort- und Zeichenebene, dazu ein viertes Zeilenpaar, das sich nur in der Schl\u00fcsselreihenfolge unterscheidet und dasselbe Objekt ist\"><figcaption>Drei Ebenen f\u00fcr eine \u00c4nderung und ein viertes Paar, das ein Zeilenvergleich verschieden nennt und ein Parser gleich.<\/figcaption><\/figure>\n<h2>Wovon der Abstand gef\u00fcllt ist<\/h2>\n<p>Ausgaben werden erzeugt, und Erzeuger sind zu nichts verpflichtet. Dieselbe Konfiguration, zweimal ausgegeben, kann sich in der Reihenfolge der Objektschl\u00fcssel unterscheiden, in Kennungen, die beim Ausgeben vergeben werden, in einem Fingerabdruck, der ein Zeitstempel ist, und darin, ob die Datei mit einem Zeilenumbruch endet. Nichts davon ist eine \u00c4nderung; alles davon ist ein Unterschied.<\/p>\n<table style=\"width:100%;border-collapse:collapse\">\n<thead>\n<tr>\n<th style=\"vertical-align:top\">Quelle des Rauschens<\/th>\n<th>Wie es aussieht<\/th>\n<th>Wie es verschwindet<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"vertical-align:top\">Schl\u00fcsselreihenfolge<\/td>\n<td>ganze Bl\u00f6cke gelten als ge\u00e4ndert<\/td>\n<td><code>jq -S .<\/code> sortiert die Schl\u00fcssel rekursiv<\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align:top\">Fingerabdr\u00fccke, Zeitstempel<\/td>\n<td>eine ge\u00e4nderte Zeile je Objekt<\/td>\n<td>die Felder vor dem Vergleich l\u00f6schen<\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align:top\">Beim Ausgeben vergebene Kennungen<\/td>\n<td>jeder Verweis weicht ab<\/td>\n<td>ebenso &#8211; oder \u00fcber Namen vergleichen<\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align:top\">Einr\u00fcckung<\/td>\n<td>alles weicht ab<\/td>\n<td><code>jq<\/code> formatiert beide Seiten gleich<\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align:top\">Zeilenenden<\/td>\n<td>jede Zeile weicht ab und sieht gleich aus<\/td>\n<td><code>dos2unix<\/code> oder die Option des Vergleichswerkzeugs<\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align:top\">Minimierung<\/td>\n<td>eine Zeile weicht ab und sagt nichts<\/td>\n<td>neu formatieren, dann vergleichen<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Die Zeile mit den Zeilenenden kostet eine Stunde, weil die beiden Zeilen auf dem Bildschirm genau gleich aussehen. Eine Datei, die durch einen Windows-Editor gegangen ist, unterscheidet sich von ihrem Ursprung in jeder einzelnen Zeile, und jeder dieser Unterschiede ist unsichtbar.<\/p>\n<h2>Erst normalisieren, dann vergleichen<\/h2>\n<p>Die Abhilfe ist eine Verarbeitungskette und kein besseres Vergleichswerkzeug. Beide Dateien laufen durch dieselbe Normalisierung, die fl\u00fcchtigen Felder werden entfernt, und erst danach werden die Ergebnisse verglichen &#8211; dann enth\u00e4lt der Vergleich, was sich ge\u00e4ndert hat, und sonst nichts.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>norm() {\n  jq -S 'walk(if type == \"object\"\n              then del(.fingerprint, .accountId, .containerVersionId)\n              else . end)' \"$1\"\n}\n\ndiff &lt;(norm alt.json) &lt;(norm neu.json)<\/code><\/pre>\n<p><code>walk<\/code> steigt in jedes Objekt hinab, die Felder verschwinden also \u00fcberall, wo sie vorkommen, und nicht nur auf der obersten Ebene. <code>-S<\/code> sortiert die Schl\u00fcssel jedes Objekts und beseitigt damit allein die gr\u00f6\u00dfte Rauschquelle. Was beides \u00fcbersteht, ist eine \u00c4nderung, die jemand gemacht hat.<\/p>\n<h2>Drei Ebenen, drei verschiedene Antworten<\/h2>\n<p>Zeile, Wort und Zeichen sind keine G\u00fcteklassen, sondern verschiedene Fragen. Ein Zeilenvergleich beantwortet, welche Zeilen nicht gleich sind, und das ist die richtige Frage f\u00fcr Quelltext, wo eine Zeile ungef\u00e4hr eine Anweisung ist. Es ist die falsche Frage f\u00fcr eine JSON-Datei mit einem Objekt je Zeile und vollends unbrauchbar f\u00fcr eine minimierte, in der das ganze Dokument eine einzige Zeile ist.<\/p>\n<p>Die Wortebene vergleicht Bausteine und macht eine \u00c4nderung an einem Wert lesbar. Die Zeichenebene ist feiner, als zum Lesen n\u00f6tig w\u00e4re, und genau das Richtige, wenn die Zeile lang ist: In einer minimierten Containerausgabe kann nur ein Zeichenvergleich auf den einen umgekippten Wahrheitswert zeigen.<\/p>\n<h2>Was keine Ebene zeigt<\/h2>\n<p>Ein Textvergleich sieht Text. Drei Arten von \u00c4nderung bleiben deshalb unsichtbar, gleich wie fein die Aufl\u00f6sung wird. Ein verschobener Block erscheint als L\u00f6schung an einer und als Erg\u00e4nzung an anderer Stelle, ohne dass etwas die beiden verbindet. Eine umbenannte Variable, die an zw\u00f6lf Stellen vorkommt, erscheint als zw\u00f6lf einzelne \u00c4nderungen statt als eine Absicht. Und ein Wert, der den Typ gewechselt hat, ohne das Aussehen zu wechseln &#8211; aus <code>\"1\"<\/code> wird <code>1<\/code> -, ist ein Unterschied von zwei Zeichen mit Folgen, die keine Hervorhebung vermittelt.<\/p>\n<p>Der umgekehrte Fall steht in der vierten Zeile des Diagramms: zwei Dateien, die sich in jeder Zeile unterscheiden und dasselbe Objekt beschreiben. Ein Vergleich von Text kann immer nur Fragen \u00fcber Text beantworten &#8211; und die Frage, die tats\u00e4chlich gestellt wird, ob sich die Konfiguration ge\u00e4ndert hat, ist eine Frage \u00fcber Struktur.<\/p>\n<h2>Was stattdessen zu vergleichen ist, wenn es auf die Antwort ankommt<\/h2>\n<p>Bei allem, was ein Schema hat, ist der ehrliche Vergleich der zwischen zerlegten Objekten und nicht der zwischen Dateien. <code>jq<\/code> kann das unmittelbar: Zwei Dokumente sind gleich oder sie sind es nicht, und die Antwort ist ein einzelner Wahrheitswert, den Formatierung, Reihenfolge und Leerraum nicht ber\u00fchren.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code># ist es &uuml;berhaupt dasselbe Objekt?\njq -e --slurpfile b neu.json '. == $b[0]' alt.json &gt;\/dev\/null &amp;&amp; echo \"gleich\"\n\n# welche Schl&uuml;ssel der obersten Ebene weichen ab?\njq -n --slurpfile a alt.json --slurpfile b neu.json \\\n  '($a[0] | keys) as $ka | ($b[0] | keys) as $kb\n   | { nur_alt: ($ka - $kb), nur_neu: ($kb - $ka) }'<\/code><\/pre>\n<p>Dem Zeilenvergleich bleibt damit die Aufgabe, die er gut kann: einem Menschen zu zeigen, was ein anderer getan hat, in einer Form, die sich liest wie die Datei, die er bearbeiten wird. Er beantwortet sehr gut, worauf zu schauen ist, und \u00fcberhaupt nicht, ob etwas dasselbe ist &#8211; und der meiste \u00c4rger mit ihm kommt daher, dass ihm die zweite Frage gestellt wird.<\/p>\n<div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/web\" target=\"_blank\" rel=\"noopener noreferrer\">Tag Manager for web<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\" target=\"_blank\" rel=\"noopener noreferrer\">Google Tag Manager documentation<\/a><\/li>\n<li><a href=\"https:\/\/docs.docker.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker documentation<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Zwei Ausgaben desselben Containers, dreihundert abweichende Zeilen und eine einzige tats\u00e4chliche \u00c4nderung. Der Unterschied zwischen beiden Zahlen besteht vollst\u00e4ndig aus Dingen, die ein Textvergleich nicht wissen kann.<\/p>\n","protected":false},"author":1,"featured_media":15177,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[150],"tags":[92214],"class_list":["post-10424","post","type-post","status-publish","format-standard","hentry","category-web-entwicklung","tag-devops-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt - Lukas Wojcik - Blog<\/title>\n<meta name=\"description\" content=\"Warum zwei Ausgaben in hunderten Zeilen abweichen, ohne dass sich etwas ge\u00e4ndert hat, und welche \u00c4nderungen kein Zeilenvergleich zeigt.\" \/>\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.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Warum zwei Ausgaben in hunderten Zeilen abweichen, ohne dass sich etwas ge\u00e4ndert hat, und welche \u00c4nderungen kein Zeilenvergleich zeigt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-17T10:30:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10424-was-ein-zeilenweiser-vergleich-zeigt-n.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt\",\"datePublished\":\"2026-09-17T10:30:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/\"},\"wordCount\":778,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10424-was-ein-zeilenweiser-vergleich-zeigt-n.png\",\"keywords\":[\"DevOps\"],\"articleSection\":[\"Web Entwicklung\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/\",\"name\":\"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10424-was-ein-zeilenweiser-vergleich-zeigt-n.png\",\"datePublished\":\"2026-09-17T10:30:00+00:00\",\"description\":\"Warum zwei Ausgaben in hunderten Zeilen abweichen, ohne dass sich etwas ge\u00e4ndert hat, und welche \u00c4nderungen kein Zeilenvergleich zeigt.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10424-was-ein-zeilenweiser-vergleich-zeigt-n.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10424-was-ein-zeilenweiser-vergleich-zeigt-n.png\",\"width\":1200,\"height\":630,\"caption\":\"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt - Lukas Wojcik - Blog","description":"Warum zwei Ausgaben in hunderten Zeilen abweichen, ohne dass sich etwas ge\u00e4ndert hat, und welche \u00c4nderungen kein Zeilenvergleich zeigt.","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.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/","og_locale":"en_US","og_type":"article","og_title":"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt - Lukas Wojcik - Blog","og_description":"Warum zwei Ausgaben in hunderten Zeilen abweichen, ohne dass sich etwas ge\u00e4ndert hat, und welche \u00c4nderungen kein Zeilenvergleich zeigt.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-17T10:30:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10424-was-ein-zeilenweiser-vergleich-zeigt-n.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt","datePublished":"2026-09-17T10:30:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/"},"wordCount":778,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10424-was-ein-zeilenweiser-vergleich-zeigt-n.png","keywords":["DevOps"],"articleSection":["Web Entwicklung"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/","name":"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10424-was-ein-zeilenweiser-vergleich-zeigt-n.png","datePublished":"2026-09-17T10:30:00+00:00","description":"Warum zwei Ausgaben in hunderten Zeilen abweichen, ohne dass sich etwas ge\u00e4ndert hat, und welche \u00c4nderungen kein Zeilenvergleich zeigt.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10424-was-ein-zeilenweiser-vergleich-zeigt-n.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10424-was-ein-zeilenweiser-vergleich-zeigt-n.png","width":1200,"height":630,"caption":"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/zwei-gtm-container-exporte-vergleichen-normalisieren-vor-dem-diff\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Zwei GTM-Container-Exporte vergleichen: Normalisieren vor dem Diff und was ein Zeilenvergleich nicht zeigt"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10424"}],"version-history":[{"count":5,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10424\/revisions"}],"predecessor-version":[{"id":16898,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10424\/revisions\/16898"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/15177"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}