{"id":3984,"date":"2024-09-16T12:23:13","date_gmt":"2024-09-16T10:23:13","guid":{"rendered":"https:\/\/vielhuber.de\/?p=3984"},"modified":"2025-05-29T17:07:56","modified_gmt":"2025-05-29T15:07:56","slug":"git-commit-messages-mit-chatgpt","status":"publish","type":"post","link":"https:\/\/vielhuber.de\/blog\/git-commit-messages-mit-chatgpt\/","title":{"rendered":"Git Commit-Messages mit ChatGPT"},"content":{"rendered":"\n<p>Commit-Messages in Git werden oft vernachl\u00e4ssigt. Viele sehen sie lediglich als notwendiges \u00dcbel an, um \u00c4nderungen zu speichern. Dabei sind aussagekr\u00e4ftige Commit-Messages ein entscheidender Faktor f\u00fcr den Erfolg eines Projekts: Sie sorgen eine gute Nachvollziehbarkeit von \u00c4nderungen, eine effiziente Zusammenarbeit im Team und eine schnellere Fehlersuche. Kein Grund, die Commit-Messages automatisch mit Hilfe von KI vorbereiten zu lassen.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Mit Hilfe von sog. <a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Customizing-Git-Git-Hooks\" target=\"_blank\" rel=\"noreferrer noopener\">Hooks<\/a> ist es m\u00f6glich, Scripte z.B. zum automatisierten Testing oder zur Codepr\u00fcfung zu bestimmten Ereignissen w\u00e4hrend des Git-Workflows auszuf\u00fchren. Der clientseitige <a href=\"https:\/\/git-scm.com\/docs\/githooks#_prepare_commit_msg\" target=\"_blank\" rel=\"noreferrer noopener\">prepare-commit-msg<\/a>-Hook wird unmittelbar <em>vor<\/em> dem \u00d6ffnen des Commit-Editors ausgef\u00fchrt. Das folgende Bash-Script muss dazu beispielsweise im Ordner <code>~\/git-template\/hooks\/prepare-commit-msg<\/code> abgelegt werden:<\/p>\n\n\n\n<p class=\"githubgist\" data-gist-file=\"script.sh\">0d311d3e3743f65bd1f7fa370c3b3848<\/p>\n\n\n\n<p>Anschlie\u00dfend f\u00fcgt man den <a href=\"https:\/\/platform.openai.com\/api-keys\" target=\"_blank\" rel=\"noreferrer noopener\">OpenAI-API-Key<\/a> in Zeile \\(4\\) ein und modifiziert bei Bedarf das verwendete ChatGPT-Model in Zeile \\(5\\) (in unserem Beispiel <code>gpt-4o<\/code>). Anschlie\u00dfend machen wir das Script ausf\u00fchrbar mit <code>chmod +x ~\/git-template\/hooks\/prepare-commit-msg<\/code> und setzen mit <code>git config --global core.hooksPath ~\/git-template\/hooks<\/code> das Standardverzeichnis f\u00fcr Git-Hooks in der globalen Git-Konfiguration.<\/p>\n\n\n\n<p>Wichtig: Dadurch muss man lokale Git-Hooks zuk\u00fcnftig nicht mehr in <code>.git\/hooks<\/code>, sondern in <code>~\/git-template\/hooks<\/code> ablegen. Will man weiterhin projektspezifische Hooks haben, f\u00fchrt man jeweils <code>git config core.hooksPath .git\/hooks &amp;&amp; ln -s ~\/git-template\/hooks\/prepare-commit-msg .git\/hooks\/prepare-commit-msg<\/code> im jeweiligen Projekt aus. Will man das Script generell wieder deaktivieren, gen\u00fcgt ein <code>git config --global --unset core.hooksPath<\/code>.<\/p>\n\n\n\n<p>Das Script generiert f\u00fcr den <a href=\"https:\/\/git-scm.com\/docs\/git-diff\" target=\"_blank\" rel=\"noreferrer noopener\">diff<\/a> aller gestagten Dateien automatisch eine passende Vorlage f\u00fcr die Commit-Message: <code>git add -A . &amp;&amp; git commit<\/code>. Alternativ kann man auch eine leere Nachricht (\".\") senden, die anschlie\u00dfend automatisch \u00fcberschrieben wird: <code>git add -A . &amp;&amp; git commit -m \".\" &amp;&amp; git push<\/code> \u2013 doch Vorsicht: Hier ist keine Validierung der Nachricht mehr m\u00f6glich.<\/p>\n\n\n\n<p>Die KI-Modelle sind inzwischen so weit, dass sehr vern\u00fcnftige, automatische Commit-Messages auf Basis der durchgef\u00fchrten \u00c4nderungen erstellt werden. Durch Anpassung des Prompts (ab Zeile \\(13\\)) kann man die R\u00fcckgabe weiter optimieren und an die eigenen Bed\u00fcrfnisse anpassen. Das Script funktioniert \u00fcbrigens auch in Git-UI-Tools wie <a href=\"https:\/\/www.git-tower.com\" target=\"_blank\" rel=\"noreferrer noopener\">Tower<\/a> und <a href=\"https:\/\/www.syntevo.com\/smartgit\" target=\"_blank\" rel=\"noreferrer noopener\">SmartGit<\/a>.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Commit-Messages in Git werden oft vernachl\u00e4ssigt. Viele sehen sie lediglich als notwendiges \u00dcbel an, um \u00c4nderungen zu speichern. Dabei sind aussagekr\u00e4ftige Commit-Messages ein entscheidender Faktor f\u00fcr den Erfolg eines Projekts: Sie sorgen eine gute Nachvollziehbarkeit von \u00c4nderungen, eine effiziente Zusammenarbeit im Team und eine schnellere Fehlersuche. Kein Grund, die Commit-Messages automatisch mit Hilfe von KI [&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-3984","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-blog"},"acf":[],"yoast_head":"<title>Git Commit-Messages mit ChatGPT &#060; Vielhuber David<\/title>\n<meta name=\"description\" content=\"Commit-Messages in Git werden oft vernachl\u00e4ssigt. Viele sehen sie lediglich als notwendiges \u00dcbel an, um \u00c4nderungen zu speichern. Dabei sind\" \/>\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-commit-messages-mit-chatgpt\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Git Commit-Messages mit ChatGPT &#060; Vielhuber David\" \/>\n<meta property=\"og:description\" content=\"Commit-Messages in Git werden oft vernachl\u00e4ssigt. Viele sehen sie lediglich als notwendiges \u00dcbel an, um \u00c4nderungen zu speichern. Dabei sind\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vielhuber.de\/blog\/git-commit-messages-mit-chatgpt\/\" \/>\n<meta property=\"og:site_name\" content=\"Vielhuber David\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-16T10:23:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-29T15:07:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"552\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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\\\/git-commit-messages-mit-chatgpt\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-commit-messages-mit-chatgpt\\\/\"},\"author\":{\"name\":\"David\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"headline\":\"Git Commit-Messages mit ChatGPT\",\"datePublished\":\"2024-09-16T10:23:13+00:00\",\"dateModified\":\"2025-05-29T15:07:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-commit-messages-mit-chatgpt\\\/\"},\"wordCount\":299,\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"articleSection\":[\"Blog\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-commit-messages-mit-chatgpt\\\/\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-commit-messages-mit-chatgpt\\\/\",\"name\":\"Git Commit-Messages mit ChatGPT &#060; Vielhuber David\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\"},\"datePublished\":\"2024-09-16T10:23:13+00:00\",\"dateModified\":\"2025-05-29T15:07:56+00:00\",\"description\":\"Commit-Messages in Git werden oft vernachl\u00e4ssigt. Viele sehen sie lediglich als notwendiges \u00dcbel an, um \u00c4nderungen zu speichern. Dabei sind\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-commit-messages-mit-chatgpt\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-commit-messages-mit-chatgpt\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/git-commit-messages-mit-chatgpt\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vielhuber.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Git Commit-Messages mit ChatGPT\"}]},{\"@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 Commit-Messages mit ChatGPT &#060; Vielhuber David","description":"Commit-Messages in Git werden oft vernachl\u00e4ssigt. Viele sehen sie lediglich als notwendiges \u00dcbel an, um \u00c4nderungen zu speichern. Dabei sind","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-commit-messages-mit-chatgpt\/","og_locale":"de_DE","og_type":"article","og_title":"Git Commit-Messages mit ChatGPT &#060; Vielhuber David","og_description":"Commit-Messages in Git werden oft vernachl\u00e4ssigt. Viele sehen sie lediglich als notwendiges \u00dcbel an, um \u00c4nderungen zu speichern. Dabei sind","og_url":"https:\/\/vielhuber.de\/blog\/git-commit-messages-mit-chatgpt\/","og_site_name":"Vielhuber David","article_published_time":"2024-09-16T10:23:13+00:00","article_modified_time":"2025-05-29T15:07:56+00:00","og_image":[{"width":700,"height":552,"url":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","type":"image\/jpeg"}],"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\/git-commit-messages-mit-chatgpt\/#article","isPartOf":{"@id":"https:\/\/vielhuber.de\/blog\/git-commit-messages-mit-chatgpt\/"},"author":{"name":"David","@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"headline":"Git Commit-Messages mit ChatGPT","datePublished":"2024-09-16T10:23:13+00:00","dateModified":"2025-05-29T15:07:56+00:00","mainEntityOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/git-commit-messages-mit-chatgpt\/"},"wordCount":299,"publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"articleSection":["Blog"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/vielhuber.de\/blog\/git-commit-messages-mit-chatgpt\/","url":"https:\/\/vielhuber.de\/blog\/git-commit-messages-mit-chatgpt\/","name":"Git Commit-Messages mit ChatGPT &#060; Vielhuber David","isPartOf":{"@id":"https:\/\/vielhuber.de\/#website"},"datePublished":"2024-09-16T10:23:13+00:00","dateModified":"2025-05-29T15:07:56+00:00","description":"Commit-Messages in Git werden oft vernachl\u00e4ssigt. Viele sehen sie lediglich als notwendiges \u00dcbel an, um \u00c4nderungen zu speichern. Dabei sind","breadcrumb":{"@id":"https:\/\/vielhuber.de\/blog\/git-commit-messages-mit-chatgpt\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vielhuber.de\/blog\/git-commit-messages-mit-chatgpt\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vielhuber.de\/blog\/git-commit-messages-mit-chatgpt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vielhuber.de\/"},{"@type":"ListItem","position":2,"name":"Git Commit-Messages mit ChatGPT"}]},{"@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\/la\/wp-json\/wp\/v2\/posts\/3984","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vielhuber.de\/la\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vielhuber.de\/la\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/la\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/la\/wp-json\/wp\/v2\/comments?post=3984"}],"version-history":[{"count":18,"href":"https:\/\/vielhuber.de\/la\/wp-json\/wp\/v2\/posts\/3984\/revisions"}],"predecessor-version":[{"id":4317,"href":"https:\/\/vielhuber.de\/la\/wp-json\/wp\/v2\/posts\/3984\/revisions\/4317"}],"wp:attachment":[{"href":"https:\/\/vielhuber.de\/la\/wp-json\/wp\/v2\/media?parent=3984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vielhuber.de\/la\/wp-json\/wp\/v2\/categories?post=3984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vielhuber.de\/la\/wp-json\/wp\/v2\/tags?post=3984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}