Direkt zum Inhalt

Git Blame Explained: Wie man den Codeverlauf zurückverfolgt und intelligenter zusammenarbeitet

Lerne, wie du mit Git Blame Codeänderungen nachverfolgen, Autoren identifizieren und den Dateiverlauf nachvollziehen kannst. Dieser Leitfaden behandelt grundlegende Befehle, fortgeschrittene Funktionen und Integrationen, um deine Fähigkeiten zur Fehlersuche und Zusammenarbeit zu verbessern.
Aktualisierte 26. März 2025  · 9 Min. Lesezeit

Git ist ein leistungsfähiges Werkzeug zum Nachverfolgen von Codeänderungen, das vor allem Teams hilft, diese zu verfolgen, effizient zusammenzuarbeiten und Probleme zu beheben. Es bietet verschiedene Werkzeuge zur Verwaltung des Codeverlaufs; eines der nützlichsten ist git blame. Dieser Befehl hilft Entwicklern, den Ursprung jeder Zeile in einer Datei zurückzuverfolgen und zeigt, wer sie wann zuletzt geändert hat.

In diesem Artikel erfahren wir, wie du mit git blame Änderungen in einem Projekt verfolgen kannst. Wir beginnen mit grundlegenden Befehlen und gehen nach und nach zu fortgeschrittenen Funktionen über, wie z.B. das Ignorieren bestimmter Revisionen, die Integration mit Entwicklungstools und die Verwendung von Best Practices. Am Ende wirst du ein solides Verständnis dafür haben, wie du den Codeverlauf effektiv analysieren und die Zusammenarbeit in deinem Team verbessern kannst.

Was ist Git Blame?

Es kann schwierig sein, Änderungen am Code nachzuvollziehen, vor allem bei großen Projekten, an denen mehrere Personen beteiligt sind. Die Historie einer Datei zu verstehen ist entscheidend für die Fehlersuche, die Überprüfung früherer Entscheidungen und die Aufrechterhaltung der Codequalität. Ohne eine klare Historie können Teams nur schwer herausfinden, warum eine bestimmte Änderung vorgenommen wurde oder wen sie zur Klärung fragen müssen.

Hier ist git blame von unschätzbarem Wert. Es ermöglicht dir, Änderungen auf einer detaillierten Ebene zu erkennen, indem es die Commit-Details neben jeder Codezeile anzeigt. Mit diesen Informationen kannst du schnell den entsprechenden Commit finden, die dazugehörige Nachricht überprüfen und den weiteren Kontext der Änderung sehen. Egal, ob du einen Fehler behebst, Änderungen überprüfst oder einfach nur versuchst, die Entwicklung einer Datei zu verstehen, git blame liefert die nötigen Einblicke, um fundierte Entscheidungen zu treffen.

Git Blame verstehen: Ein Leitfaden für Entwickler

Warum Git Blame verwenden?

Wenn du im Team arbeitest oder ein Problem behebst, kann es hilfreich sein zu wissen, wer eine Codezeile zuletzt bearbeitet hat. Wenn ein Fehler nach einem aktuellen Update auftritt, hilft git blame dabei, die genaue Änderung zu finden, die das Problem verursacht hat. Außerdem können sich die Entwickler/innen an die richtige Person wenden, wenn sie ein bestimmtes Problem klären müssen.

Dieser Befehl ist auch nützlich, um die Gründe für Änderungen zu verstehen. Codekommentare und Commit-Meldungen geben manchmal nicht den gesamten Gedankengang wieder. Indem du eine Änderung bis zu einem bestimmten Commit zurückverfolgst, können die Entwickler die damit verbundenen Diskussionen überprüfen und das Gesamtbild sehen.

Warum Git Blame verwenden?

Mehr dazu erfährst du in unserem Git- und GitHub-Tutorial, das Anfängern die Funktionsweise der Git-Versionskontrolle erklärt und ihre wichtige Rolle bei Data Science-Projekten hervorhebt.

Grundlegende Verwendung von git blame

Die grundlegende Syntax von git blame lautet:

git blame <file>

Mit diesem Befehl wird jede Zeile mit dem letzten Commit versehen, der sie geändert hat, einschließlich Autor, Zeitstempel und Commit-Hash. Hier ist ein Beispiel:

$ git blame example.py
derrickmwiti@Derricks-MacBook-Pro remixer % git blame src/components/ContentGenerator.vue
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    1) <template>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    2)   <div class="content-generator">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    3)     <div class="card h-100 border-0 shadow-sm">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    4)       <div class="card-header bg-white border-bottom-0 pt-4">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    5)         <div class="d-flex justify-content-between align-items-center mb-3">
289030a0 (Derrick Mwiti 2025-03-11 12:47:11 +0300    6)           <div class="d-flex align-items-center gap-2">
289030a0 (Derrick Mwiti 2025-03-11 12:47:11 +0300    7)             <h5 class="mb-0">Content Generator</h5>
289030a0 (Derrick Mwiti 2025-03-11 12:47:11 +0300    8)             <span class="badge bg-secondary" v-if="openaiModel">{{ openaiModel }}</span>
289030a0 (Derrick Mwiti 2025-03-11 12:47:11 +0300    9)           </div>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   10)         </div>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   11) 
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   12) 
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   13)         <nav>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   14)           <div class="nav nav-tabs card-header-tabs gap-1" id="nav-tab" role="tablist">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   15)             <button
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   16)               v-for="platform in platforms"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   17)               :key="platform"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300   18)               class="nav-link"

Jede Zeile enthält:

  • Der Commit-Hash (^3b1aef2 und ^8f2c4d3)
  • Der Name des Autors (Derrick Mwiti)
  • Der Zeitstempel der letzten Änderung
  • Die eigentliche Zeile des Codes

Praktische Anwendungen von Git Blame

Nachdem du nun die grundlegende Syntax von git blame verstanden hast, wollen wir uns ansehen, wie du sie in alltäglichen Entwicklungsszenarien anwenden kannst.

Den Autor einer bestimmten Zeile finden

Wenn eine Datei groß ist und du nur einen bestimmten Teil prüfen musst, gib einen Zeilenbereich an:

derrickmwiti@Derricks-MacBook-Pro remixer % git blame -L 10,20  src/components/ContentGenerator.vue
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 10)         </div>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 11) 
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 12) 
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 13)         <nav>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 14)           <div class="nav nav-tabs card-header-tabs gap-1" id="nav-tab" role="tablist">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 15)             <button
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 16)               v-for="platform in platforms"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 17)               :key="platform"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 18)               class="nav-link"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 19)               :class="{ active: activeTab === platform }"
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300 20)               :id="nav-${platform}-tab"

Dies konzentriert sich auf die Zeilen 10 bis 20 und macht es einfacher, relevante Änderungen zu finden.

Änderungen mit git show nachvollziehen

git blame hebt zwar die letzte Änderung in jeder Zeile hervor, erklärt aber nicht, was in diesem Commit geändert wurde. Um mehr Details zu sehen, benutze git show :

derrickmwiti@Derricks-MacBook-Pro remixer % git show  28203e0
commit 28203e0f7cbe92c6baf6897a54686e87d16c9cda
Author: Derrick Mwiti <mwitiderrick@gmail.com>
Date:   Mon Mar 10 17:48:31 2025 +0300


diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..5a5809d
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,9 @@
+[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}]
+charset = utf-8
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+end_of_line = lf
+max_line_length = 100
diff --git a/.env b/.env
:

Wenn du durch die tatsächliche Commit-ID von git blame ersetzt, kannst du die vollständige Commit-Nachricht und den Code-Diff einsehen, um den Grund für die Änderung zu verstehen.

Um dies weiter zu erforschen, lies unser Git Diff Lehrgang um zu erfahren, wie du mit Git Diff Änderungen am Code effektiv nachverfolgen kannst, von einfachen Vergleichen bis hin zu fortgeschrittenen Techniken.

Git Blame Erweiterte Funktionen

Hier sind einige der komplexeren Möglichkeiten, wie du Git Blame in einem Arbeitsablauf nutzen kannst: 

Whitespace-Änderungen ignorieren

Einige Formatierungsänderungen, wie z. B. das Festlegen der Einrückung, haben keine Auswirkungen auf die Logik. Um diese herauszufiltern, verwende git blame -w :

derrickmwiti@Derricks-MacBook-Pro remixer % git blame -w src/components/ContentGenerator.vue       
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    1) <template>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    2)   <div class="content-generator">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    3)     <div class="card h-100 border-0 shadow-sm">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    4)       <div class="card-header bg-white border-bottom-0

Ignorieren bestimmter Revisionen

Wenn bestimmte Commits (wie z.B. Massenumformatierungen) die Blame History überladen, können sie mit git blame --ignore-rev ignoriert werden:

derrickmwiti@Derricks-MacBook-Pro remixer % git blame --ignore-rev 28203e0 src/components/ContentGenerator.vue 
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    1) <template>
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    2)   <div class="content-generator">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    3)     <div class="card h-100 border-0 shadow-sm">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    4)       <div class="card-header bg-white border-bottom-0 pt-4">
^28203e0 (Derrick Mwiti 2025-03-10 17:48:31 +0300    5)         <div class="d-flex justify-content-between align-items-center mb-3">
289030a0 (Derrick Mwiti 2025-03-11 12:47:11 +0300    6)           <div class="d-flex align-items-center gap-2">

Um mehrere Commits konsequent zu ignorieren, kannst du sie in einer Datei auflisten und sie mit der Option --ignore-revs-file referenzieren. Dies hilft, eine saubere Schuldgeschichte zu erhalten, indem irrelevante Änderungen ausgeschlossen werden.

Erstelle im Stammverzeichnis deines Repositorys eine Datei namens .git-blame-ignore-revs. Listet die zu ignorierenden Commit-Hashes auf und fügt optional Kommentare zur Verdeutlichung hinzu:

# Commit introducing code formatting changes
a926bba49c89a5b882cd298be3af2570b1e6252c

Führe den folgenden Befehl aus, um die angegebenen Revisionen zu ignorieren.

git blame --ignore-revs-file .git-blame-ignore-revs filename

Führe den folgenden Befehl aus, um Git anzuweisen, deine ignore-Datei standardmäßig zu verwenden:

git config blame.ignoreRevsFile .git-blame-ignore-revs

Anzeige von Autoren-E-Mails anstelle von Namen

Um die E-Mail des Autors anstelle seines Namens anzuzeigen:

derrickmwiti@Derricks-MacBook-Pro remixer % git blame --show-email  src/components/PostsManager.vue
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   1) <template>
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   2)   <div class="posts-manager">
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   3)     <h3>Saved Posts</h3>
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   4)     
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   5)     <div v-if="loading" class="text-center my-4">
dbe547ec (<derrick@gmail.com> 2025-03-11 09:22:59 +0300   6)       <div class="spinner-border text-primary" role="status">

Dies kann nützlich sein, um die für eine bestimmte Änderung zuständige Person zu kontaktieren.

Vollständige Commit-Hashes anzeigen

Standardmäßig zeigt git blame kurze Commit-Hashes an. Um die vollständigen Hashes zu sehen, führe sie aus:

derrickmwiti@Derricks-MacBook-Pro remixer % git blame --abbrev=40 src/components/PostsManager.vue
dbe547ec4ece7cb2a1ff3dadb4770cc9ee9f161e (Derrick Mwiti 2025-03-11 09:22:59 +0300   1) <template>
dbe547ec4ece7cb2a1ff3dadb4770cc9ee9f161e (Derrick Mwiti 2025-03-11 09:22:59 +0300   2)   <div class="posts-manager">
dbe547ec4ece7cb2a1ff3dadb4770cc9ee9f161e (Derrick Mwiti 2025-03-11 09:22:59 +0300   3)     <h3>Saved Posts</h3>
dbe547ec4ece7cb2a1ff3dadb4770cc9ee9f161e (Derrick Mwiti 2025-03-11 09:22:59 +0300   4)     
dbe547ec4ece7cb2a1ff3dadb4770cc9ee9f161e (Derrick Mwiti 2025-03-11 09:22:59 +0300   5)     <div v-if="loading" class="text-center my-4">

Du kannst die Länge der Abkürzungen für den Git-Titel mit der Option --abbrev= anpassen.

Git Blame in Visual Studio Code verwenden

Für Entwickler, die Visual Studio Code verwenden, bietet die Git Blame-Erweiterung integrierte Unterstützung für git blame

Diese Erweiterung ermöglicht es den Nutzern:

  • Betrachte Schuldzuweisungen inline.
  • Bewege den Mauszeiger über die Zeilen, um Details zu den Verpflichtungen zu sehen.
  • Zugriff auf den vollständigen Datei- und Zeilenverlauf.

Git Blame Best Practices

Die Datei .git-blame-ignore-revs stellt sicher, dass Formatierungs-Commits nicht die Schuldgeschichte durcheinander bringen. Wenn du im Team arbeitest, ist es hilfreich, wenn alle die gleichen Konventionen für das Ignorieren von Überarbeitungen befolgen.

Bei der Nutzung von git blame sollte es immer darum gehen, die Gründe für Veränderungen zu verstehen, nicht darum, Schuldzuweisungen zu machen. Es ist ein Werkzeug zum Lernen und zur Verbesserung der Zusammenarbeit, das Entwicklern hilft, effizienter zusammenzuarbeiten.

Git Blame Collaboration Cycle

Fazit 

In diesem Artikel haben wir beschrieben, wie git blame Entwicklern dabei helfen kann, Änderungen an ihrem Code zu verfolgen. Von der grundlegenden Verwendung bis hin zu fortgeschrittenen Funktionen haben wir untersucht, wie dieser Befehl Klarheit darüber schafft, wer eine Datei wann geändert hat.

Du kannst diesen Befehl optimieren, indem du ihn mit anderen Git-Tools wie git show integrierst und ignorierte Revisionen konfigurierst. Egal, ob du einen Fehler behebst, Änderungen überprüfst oder einfach nur die Historie einer Datei verstehst, git blame bietet wertvolle Einblicke, die die Codepflege und die Zusammenarbeit verbessern.

Wenn du Tools wie git blame beherrschst, kannst du dich sicher in Codebases bewegen, effektiver zusammenarbeiten und eine saubere Projekthistorie führen. Es geht nicht nur darum, herauszufinden, wer eine Zeile geändert hat - sondern warum- und diese Erkenntnisse zu nutzen, um bessere Software zu entwickeln. Wenn du tiefer in das Git-Ökosystem eintauchen möchtest, schau dir unseren umfassenden Git-Kurs. oder tauche ein in unseren Git-Kurs für Fortgeschrittene.

Git Blame FAQs

Wie kann ich Änderungen mit Leerzeichen in Git Blame ignorieren?

Mit der Option -w kannst du Änderungen ignorieren, die nur den Leerraum betreffen, z. B. Einrückungen oder Abstandsänderungen.

Wie finde ich die Commit-Details einer bestimmten Änderung in git blame?

Nachdem du einen Commit-Hash aus git blame identifiziert hast, kannst du dir mit git show die Commit-Details ansehen, einschließlich der vorgenommenen Änderungen.

Wie kann ich bestimmte Commits von den Git Blame-Ergebnissen ausschließen?

Wenn du bestimmte Commits ignorieren willst (z. B. Änderungen an der Codeformatierung), verwende:

git blame --ignore-rev  

Für mehrere ignorierte Commits speicherst du sie in einer .git-blame-ignore-revs Datei und führst sie aus:

git blame --ignore-revs-file .git-blame-ignore-revs 

Gibt es eine Möglichkeit, Git Blame in Visual Studio Code zu verwenden?

Ja, die Git Blame-Erweiterung in VS Code bietet Inline-Blame-Annotationen, einen Commit-Verlauf und detaillierte Einblicke. Du kannst Schuldzuweisungen in den Einstellungen aktivieren oder anpassen.

Themen

Top DataCamp Kurse

Kurs

Introduction to Git

2 hr
18K
Discover the fundamentals of Git for version control in your software and data projects.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Die 50 besten AWS-Interview-Fragen und Antworten für 2025

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interviewfragen, zusammen mit Fragen, die auf realen Situationen basieren.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen