{"id":1066,"date":"2024-09-16T08:00:42","date_gmt":"2024-09-16T06:00:42","guid":{"rendered":"https:\/\/development-by.schwarzer.de\/blog\/?p=1066"},"modified":"2024-09-18T11:20:21","modified_gmt":"2024-09-18T09:20:21","slug":"git-commit-raetselraten-fuer-eingeweihte","status":"publish","type":"post","link":"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/","title":{"rendered":"GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte"},"content":{"rendered":"<p><!-- <ezTOC> -->In der Welt der Softwareentwicklung gibt es unz\u00e4hlige Werkzeuge und Praktiken, die den Arbeitsalltag erleichtern sollen. Eine der zentralen Aufgaben eines Entwicklers ist es, \u00c4nderungen im Code zu dokumentieren. Daf\u00fcr bietet sich das Versionierungssystem Git hervorragend an. Doch leider gibt es eine weit verbreitete Gewohnheit, die das Potenzial dieses Tools untergr\u00e4bt: das Verfassen nichtssagender Commit-Messages. In diesem Blogbeitrag beleuchten wir diese Gewohnheit, warum sie problematisch ist und wie man es besser machen kann.<\/p>\n<p><!--more--><\/p>\n<h2>Die Gewohnheit: Nichtssagende Commit-Messages<\/h2>\n<p>Es ist ein h\u00e4ufiger Anblick: Ein Entwickler schlie\u00dft seine Arbeit an einem Feature oder Bugfix ab und steht vor der Aufgabe, seine \u00c4nderungen zu committen. Die Frage &#8220;Was habe ich ge\u00e4ndert?&#8221; liegt auf der Hand, und so entsteht schnell eine Commit-Message wie &#8220;Klasse XY angelegt&#8221; oder &#8220;Konfiguration aktualisiert&#8221;. Auf den ersten Blick mag das sinnvoll erscheinen \u2013 schlie\u00dflich beschreibt die Nachricht doch genau das, was ge\u00e4ndert wurde. Doch bei n\u00e4herer Betrachtung zeigt sich, dass solche Commit-Messages oft zu kurz greifen.<\/p>\n<p>Diese Art der Dokumentation beschr\u00e4nkt sich auf das &#8220;Was&#8221;. Sie beschreibt, welche Datei oder Klasse angelegt oder ge\u00e4ndert wurde, aber sie liefert keine Hinweise darauf, warum diese \u00c4nderung n\u00f6tig war oder wie der Entwickler zu seiner L\u00f6sung gekommen ist. Solche Commit-Messages sind rein deskriptiv und bleiben an der Oberfl\u00e4che. Im Alltag sind sie kaum n\u00fctzlich, insbesondere wenn sp\u00e4ter nachverfolgt werden muss, warum bestimmte Entscheidungen getroffen wurden.<\/p>\n<h2>Was daran schlecht ist<\/h2>\n<p>Das Problem mit solchen Commit-Messages zeigt sich sp\u00e4testens dann, wenn im Nachhinein Fehler im Code auftreten oder eine Recherche notwendig wird, um fr\u00fchere Entscheidungen nachzuvollziehen. Die Git-Historie ist eines der m\u00e4chtigsten Werkzeuge, um den Weg zur\u00fcckzuverfolgen und zu verstehen, wie es zu bestimmten \u00c4nderungen kam. Wenn die Commit-Messages jedoch nur das &#8220;Was&#8221; beschreiben, bleibt das &#8220;Warum&#8221; im Dunkeln.<\/p>\n<p>Das bedeutet: Der Entwickler, der die Historie durchsucht, muss den urspr\u00fcnglichen Kontext der \u00c4nderung m\u00fchsam rekonstruieren, oft durch das Lesen des tats\u00e4chlichen Codes oder durch Gespr\u00e4che mit Kollegen. Das kostet Zeit, erh\u00f6ht die Fehleranf\u00e4lligkeit und macht den gesamten Entwicklungsprozess ineffizienter. Besonders bei komplexen Projekten oder wenn mehrere Entwickler beteiligt sind, wird das Problem potenziert. Das Ergebnis: Git-Commit-Messages, die eigentlich Klarheit schaffen sollten, f\u00fchren stattdessen zu unn\u00f6tigem R\u00e4tselraten.<\/p>\n<h2>Wie man es besser macht<\/h2>\n<p>Eine bew\u00e4hrte Methode, um die Qualit\u00e4t von Commit-Messages zu verbessern, ist die Verwendung von Ticket-IDs und einer strukturierten Formulierung nach dem Konzept der &#8220;Conventional Commits&#8221;. Anstatt nur das &#8220;Was&#8221; zu beschreiben, sollte eine Commit-Message mit der Ticket-ID beginnen, in deren Rahmen die \u00c4nderung vorgenommen wurde. Dies schafft sofort eine Verbindung zu den detaillierteren Informationen im Ticket-System und bietet einen klaren Ausgangspunkt f\u00fcr sp\u00e4tere Recherchen.<\/p>\n<p>Zus\u00e4tzlich hilft es, die Commit-Message so zu formulieren, dass nicht nur das &#8220;Was&#8221;, sondern auch das &#8220;Warum&#8221; und &#8220;Wie&#8221; beschrieben werden. Eine gute Commit-Message k\u00f6nnte zum Beispiel so aussehen: <code>feat: [TICKET-123] Neue Klasse f\u00fcr Zahlungsabwicklung hinzugef\u00fcgt, um zuk\u00fcnftige Erweiterungen zu erleichtern<\/code>. Diese Nachricht liefert sowohl den Kontext als auch den Grund f\u00fcr die \u00c4nderung und macht sie damit wesentlich wertvoller.<\/p>\n<h2>Warum das besser ist<\/h2>\n<p>Commit-Messages, die durchdacht und informativ sind, erleichtern die Arbeit nicht nur f\u00fcr den Verfasser, sondern f\u00fcr das gesamte Team. Wenn sp\u00e4ter einmal Fehler im Code auftauchen oder Anpassungen notwendig werden, bietet eine pr\u00e4zise Git-Historie einen schnellen Einstiegspunkt. Der Zusammenhang zwischen Code\u00e4nderung und dem zugrunde liegenden Problem oder Feature bleibt nachvollziehbar, ohne dass zus\u00e4tzliche Recherchen n\u00f6tig sind.<\/p>\n<p>Au\u00dferdem f\u00f6rdert eine konsistente und klare Commit-Historie die Zusammenarbeit im Team. Jeder Entwickler kann sofort nachvollziehen, warum eine \u00c4nderung vorgenommen wurde und in welchem Kontext sie steht. Das reduziert Missverst\u00e4ndnisse und hilft, den Code qualitativ hochwertig und wartbar zu halten. Letztlich tr\u00e4gt dies zur Produktivit\u00e4t und Effizienz des gesamten Entwicklungsteams bei.<\/p>\n<h2>Fazit<\/h2>\n<p>Nichtssagende Commit-Messages sind ein vermeidbares Problem, das die Arbeit unn\u00f6tig verkompliziert. Durch die Nutzung von Ticket-IDs und strukturierte Commit-Nachrichten k\u00f6nnen wir die Qualit\u00e4t unserer Git-Historie erheblich verbessern und so zuk\u00fcnftige Probleme vermeiden. Es lohnt sich, hier etwas mehr Zeit zu investieren \u2013 zum Wohle aller Beteiligten.<\/p>\n<p>Wie handhaben Sie GIT in der Entwicklung?<\/p>\n<p>Ihre Fragen dazu beantwortet unser Head of DevOps gerne:<br \/>\nKai Rumrich, <a href=\"mailto:kai.rumrich@schwarzer.de\">kai.rumrich@schwarzer.de<\/a>, Jetzt anrufen: +49 6131 \/ 30 292 34<!-- <\/ezTOC> --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der Welt der Softwareentwicklung gibt es unz\u00e4hlige Werkzeuge und Praktiken, die den Arbeitsalltag erleichtern sollen. Eine der zentralen Aufgaben [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1070,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"features_image":"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/09\/git-commit.jpg","rk_cat":null,"rk_date":"16.09.2024","yoast_head":"<title>GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte - development-by.schwarzer.de<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte - development-by.schwarzer.de\" \/>\n<meta property=\"og:description\" content=\"In der Welt der Softwareentwicklung gibt es unz\u00e4hlige Werkzeuge und Praktiken, die den Arbeitsalltag erleichtern sollen. Eine der zentralen Aufgaben [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/\" \/>\n<meta property=\"og:site_name\" content=\"development-by.schwarzer.de\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-16T06:00:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-18T09:20:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/09\/git-commit.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1080\" \/>\n\t<meta property=\"og:image:height\" content=\"378\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hans-J\u00fcrgen Schwarzer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/#website\",\"url\":\"https:\/\/development-by.schwarzer.de\/blog\/\",\"name\":\"development-by.schwarzer.de\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/development-by.schwarzer.de\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/#primaryimage\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/09\/git-commit.jpg\",\"contentUrl\":\"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/09\/git-commit.jpg\",\"width\":1080,\"height\":378,\"caption\":\"GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte (Foto: AdobeStock - AnaPliego 613630000)\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/#webpage\",\"url\":\"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/\",\"name\":\"GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte - development-by.schwarzer.de\",\"isPartOf\":{\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/#primaryimage\"},\"datePublished\":\"2024-09-16T06:00:42+00:00\",\"dateModified\":\"2024-09-18T09:20:21+00:00\",\"author\":{\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/#\/schema\/person\/31bc0011f4b960a9aa559e3f04da4a06\"},\"breadcrumb\":{\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/development-by.schwarzer.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/#\/schema\/person\/31bc0011f4b960a9aa559e3f04da4a06\",\"name\":\"Hans-J\u00fcrgen Schwarzer\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/development-by.schwarzer.de\/blog\/#personlogo\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2e9a54aaac87c32742c669aa0d5556c1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2e9a54aaac87c32742c669aa0d5556c1?s=96&d=mm&r=g\",\"caption\":\"Hans-J\u00fcrgen Schwarzer\"},\"description\":\"Hans-J\u00fcrgen Schwarzer leitet die Digital-Agentur schwarzer.de software + internet gmbh. Als Unternehmer und Verleger in Personalunion wie auch als leidenschaftlicher Blogger geh\u00f6rt er zu den Hauptautoren verschiedener Online-Magazine. Innerhalb seiner breiten Palette an Themen liegen dem Mainzer Lokalpatrioten dabei vermeintlich \u201eschr\u00e4ge\u201c Ideen und technische Novit\u00e4ten besonders am Herzen - Nerdstuff, wie es heute hei\u00dft.\",\"sameAs\":[\"http:\/\/www.schwarzer.de\"],\"url\":\"#\"}]}<\/script>","yoast_head_json":{"title":"GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte - development-by.schwarzer.de","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:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/","og_locale":"de_DE","og_type":"article","og_title":"GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte - development-by.schwarzer.de","og_description":"In der Welt der Softwareentwicklung gibt es unz\u00e4hlige Werkzeuge und Praktiken, die den Arbeitsalltag erleichtern sollen. Eine der zentralen Aufgaben [&hellip;]","og_url":"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/","og_site_name":"development-by.schwarzer.de","article_published_time":"2024-09-16T06:00:42+00:00","article_modified_time":"2024-09-18T09:20:21+00:00","og_image":[{"width":1080,"height":378,"url":"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/09\/git-commit.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Hans-J\u00fcrgen Schwarzer","Gesch\u00e4tzte Lesezeit":"4 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/development-by.schwarzer.de\/blog\/#website","url":"https:\/\/development-by.schwarzer.de\/blog\/","name":"development-by.schwarzer.de","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/development-by.schwarzer.de\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"ImageObject","@id":"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/#primaryimage","inLanguage":"de-DE","url":"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/09\/git-commit.jpg","contentUrl":"https:\/\/development-by.schwarzer.de\/blog\/wp-content\/uploads\/2024\/09\/git-commit.jpg","width":1080,"height":378,"caption":"GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte (Foto: AdobeStock - AnaPliego 613630000)"},{"@type":"WebPage","@id":"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/#webpage","url":"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/","name":"GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte - development-by.schwarzer.de","isPartOf":{"@id":"https:\/\/development-by.schwarzer.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/#primaryimage"},"datePublished":"2024-09-16T06:00:42+00:00","dateModified":"2024-09-18T09:20:21+00:00","author":{"@id":"https:\/\/development-by.schwarzer.de\/blog\/#\/schema\/person\/31bc0011f4b960a9aa559e3f04da4a06"},"breadcrumb":{"@id":"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/development-by.schwarzer.de\/blog\/git-commit-raetselraten-fuer-eingeweihte\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/development-by.schwarzer.de\/blog\/"},{"@type":"ListItem","position":2,"name":"GIT-Commit: R\u00e4tselraten f\u00fcr Eingeweihte"}]},{"@type":"Person","@id":"https:\/\/development-by.schwarzer.de\/blog\/#\/schema\/person\/31bc0011f4b960a9aa559e3f04da4a06","name":"Hans-J\u00fcrgen Schwarzer","image":{"@type":"ImageObject","@id":"https:\/\/development-by.schwarzer.de\/blog\/#personlogo","inLanguage":"de-DE","url":"https:\/\/secure.gravatar.com\/avatar\/2e9a54aaac87c32742c669aa0d5556c1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2e9a54aaac87c32742c669aa0d5556c1?s=96&d=mm&r=g","caption":"Hans-J\u00fcrgen Schwarzer"},"description":"Hans-J\u00fcrgen Schwarzer leitet die Digital-Agentur schwarzer.de software + internet gmbh. Als Unternehmer und Verleger in Personalunion wie auch als leidenschaftlicher Blogger geh\u00f6rt er zu den Hauptautoren verschiedener Online-Magazine. Innerhalb seiner breiten Palette an Themen liegen dem Mainzer Lokalpatrioten dabei vermeintlich \u201eschr\u00e4ge\u201c Ideen und technische Novit\u00e4ten besonders am Herzen - Nerdstuff, wie es heute hei\u00dft.","sameAs":["http:\/\/www.schwarzer.de"],"url":"#"}]}},"_links":{"self":[{"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/1066"}],"collection":[{"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/comments?post=1066"}],"version-history":[{"count":2,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/1066\/revisions"}],"predecessor-version":[{"id":1071,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/1066\/revisions\/1071"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/media\/1070"}],"wp:attachment":[{"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/media?parent=1066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/categories?post=1066"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/development-by.schwarzer.de\/blog\/wp-json\/wp\/v2\/tags?post=1066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}