Last chance! 50% off DataCamp Premium
Sale ends in
Git adalah alat yang kuat untuk melacak perubahan kode, khususnya membantu tim dalam pelacakan, berkolaborasi secara efisien, dan men-debug masalah. Git menyediakan berbagai alat untuk mengelola riwayat kode; salah satu yang paling berguna adalah git blame. Perintah ini membantu pengembang menelusuri asal setiap baris dalam sebuah file, menunjukkan siapa yang terakhir memodifikasinya dan kapan.
Dalam artikel ini, kita akan membahas cara menggunakan git blame untuk melacak perubahan dalam sebuah proyek. Kita akan mulai dari perintah dasar dan secara bertahap beralih ke fitur lanjutan seperti mengabaikan revisi tertentu, integrasi dengan alat pengembangan, dan praktik terbaik. Pada akhirnya, Anda akan memahami cara menganalisis riwayat kode secara efektif dan meningkatkan kolaborasi dalam tim.
Perubahan kode bisa sulit dilacak, terutama dalam proyek besar dengan banyak kontributor. Memahami riwayat sebuah file sangat penting untuk debugging, meninjau keputusan masa lalu, dan menjaga kualitas kode. Tanpa riwayat yang jelas, tim mungkin kesulitan mengetahui mengapa perubahan tertentu dilakukan atau kepada siapa harus meminta klarifikasi.
Di sinilah git blame menjadi sangat berharga. Perintah ini memungkinkan Anda mengidentifikasi perubahan pada tingkat yang sangat rinci, menampilkan detail commit di samping setiap baris kode. Dengan informasi ini, Anda dapat dengan cepat menemukan commit terkait, memeriksa pesan yang menyertainya, dan melihat konteks perubahan yang lebih luas. Baik saat Anda menelusuri bug, meninjau modifikasi, atau sekadar mencoba memahami evolusi suatu file, git blame memberikan wawasan yang dibutuhkan untuk membuat keputusan yang tepat.

Saat bekerja dalam tim atau men-debug sebuah masalah, mengetahui siapa yang terakhir mengedit suatu baris kode bisa sangat membantu. Jika sebuah bug muncul setelah pembaruan terbaru, git blame membantu mengidentifikasi perubahan persis yang memperkenalkan masalah tersebut. Perintah ini juga memungkinkan pengembang menghubungi orang yang tepat saat mereka memerlukan klarifikasi terkait isu tertentu.
Perintah ini juga berguna untuk memahami alasan di balik perubahan. Komentar kode dan pesan commit terkadang tidak menangkap keseluruhan proses berpikir. Dengan menelusuri perubahan kembali ke commit tertentu, pengembang dapat meninjau diskusi terkait dan melihat gambaran yang lebih luas.

Anda dapat mempelajari lebih lanjut di tutorial Git dan GitHub kami, yang berfungsi sebagai panduan pemula, menjelaskan cara kerja version control Git dan menyoroti perannya yang krusial dalam proyek data science.
Sintaks dasar git blame adalah:
git blame <file>
Perintah ini memberi anotasi pada setiap baris dengan commit terakhir yang memodifikasinya, termasuk penulis, cap waktu, dan hash commit. Berikut contohnya:
$ 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"
Setiap baris memuat:
^3b1aef2 dan ^8f2c4d3)Sekarang Anda memahami sintaks dasar git blame, mari lihat cara penerapannya dalam skenario pengembangan sehari-hari.
Jika sebuah file besar dan Anda hanya perlu memeriksa bagian tertentu, tentukan rentang baris:
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"
Ini memfokuskan pada baris 10 hingga 20, sehingga lebih mudah menemukan perubahan yang relevan.
Meskipun git blame menyoroti perubahan terakhir pada setiap baris, perintah ini tidak menjelaskan apa yang dimodifikasi dalam commit tersebut. Untuk melihat detail lebih lanjut, gunakan git show <commit-hash>:
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
:
Dengan mengganti <commit-hash> dengan ID commit aktual dari git blame, Anda akan melihat pesan commit lengkap dan diff kode, sehingga membantu memahami alasan di balik perubahan.
Untuk mendalami lebih jauh, lihat tutorial Git Diff kami untuk mempelajari cara menggunakan git diff guna melacak perubahan kode secara efektif, dari perbandingan dasar hingga teknik lanjutan.
Berikut beberapa cara yang lebih mendalam untuk memanfaatkan Git blame dalam alur kerja:
Beberapa perubahan pemformatan, seperti perbaikan indentasi, tidak memengaruhi logika. Untuk menyaringnya, gunakan git blame -w <file>:
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
Jika commit tertentu (seperti pemformatan massal) membuat riwayat blame menjadi berantakan, commit tersebut dapat diabaikan dengan git blame --ignore-rev <commit-hash> <file>:
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">
Untuk mengabaikan beberapa commit secara konsisten, Anda dapat mencantumkannya dalam sebuah file dan mereferensikannya menggunakan opsi --ignore-revs-file. Ini membantu menjaga riwayat blame tetap bersih dengan mengecualikan perubahan yang tidak relevan.
Di direktori root repositori Anda, buat file bernama .git-blame-ignore-revs. Daftarkan hash commit yang akan diabaikan, opsional tambahkan komentar untuk kejelasan:
# Commit yang memperkenalkan perubahan pemformatan kode
a926bba49c89a5b882cd298be3af2570b1e6252c
Jalankan perintah berikut untuk mengabaikan revisi yang ditentukan:
git blame --ignore-revs-file .git-blame-ignore-revs filename
Jalankan perintah berikut untuk memberi tahu Git agar menggunakan file ignore Anda secara bawaan:
git config blame.ignoreRevsFile .git-blame-ignore-revs
Untuk menampilkan email penulis alih-alih namanya:
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">
Ini berguna untuk menghubungi orang yang bertanggung jawab atas perubahan tertentu.
Secara default, git blame menampilkan hash commit pendek. Untuk melihat hash penuh, jalankan:
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">
Anda dapat menyesuaikan panjang singkatan Git blame menggunakan opsi --abbrev=<n>.
Bagi pengembang yang menggunakan Visual Studio Code, ekstensi Git Blame menyediakan dukungan bawaan untuk git blame.

Ekstensi ini memungkinkan pengguna untuk:
Memelihara file .git-blame-ignore-revs memastikan commit pemformatan tidak mengotori riwayat blame. Saat bekerja dalam tim, akan sangat membantu jika semua orang mengikuti konvensi yang sama untuk mengabaikan revisi.
Saat menggunakan git blame, tujuannya selalu untuk memahami alasan di balik perubahan, bukan untuk menyalahkan. Ini adalah alat untuk belajar dan meningkatkan kolaborasi, membantu pengembang bekerja lebih efisien bersama.

Dalam artikel ini, kita telah membahas bagaimana git blame dapat membantu pengembang melacak perubahan pada kode mereka. Dari penggunaan dasar hingga fitur lanjutan, kita mengeksplorasi bagaimana perintah ini memberikan kejelasan tentang siapa yang memodifikasi sebuah file dan kapan.
Anda dapat mengoptimalkan perintah ini dengan mengintegrasikannya dengan alat Git lainnya, seperti git show dan mengonfigurasi revisi yang diabaikan. Baik saat Anda men-debug masalah, meninjau perubahan, atau sekadar memahami riwayat sebuah file, git blame menawarkan wawasan berharga yang meningkatkan pemeliharaan kode dan kolaborasi.
Menguasai alat seperti git blame membantu Anda menavigasi basis kode dengan percaya diri, berkolaborasi lebih efektif, dan menjaga riwayat proyek yang lebih bersih. Ini bukan sekadar tentang mencari tahu siapa yang mengubah sebuah baris—melainkan mengapa—dan menggunakan wawasan tersebut untuk membangun perangkat lunak yang lebih baik. Untuk menyelami ekosistem Git lebih dalam, lihat kursus Git komprehensif kami, atau pelajari lebih jauh lewat kursus Git tingkat menengah.
Anda dapat menggunakan opsi -w untuk mengabaikan perubahan yang hanya melibatkan whitespace, seperti penyesuaian indentasi atau spasi.
Setelah mengidentifikasi hash commit dari git blame, gunakan git show untuk melihat detail commit, termasuk perubahan yang dibuat.
Jika Anda ingin mengabaikan commit tertentu (misalnya, perubahan pemformatan kode), gunakan:
git blame --ignore-rev <commit-hash> <file>
Untuk beberapa commit yang diabaikan, simpan dalam file .git-blame-ignore-revs dan jalankan:
git blame --ignore-revs-file .git-blame-ignore-revs <file>Ya, ekstensi Git Blame di VS Code menyediakan anotasi blame inline, riwayat commit, dan wawasan terperinci. Anda dapat mengaktifkan atau menyesuaikan anotasi blame melalui pengaturannya.
Kursus Teratas di DataCamp
Kursus
Kursus
Kursus
blogs
David Woods
13 mnt
blogs
Hugo Bowne-Anderson
13 mnt

blogs
Javier Canales Luna
14 mnt
blogs
Dario Radečić
15 mnt