Kurs
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.
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.
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.
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.