Untuk menemukan commit yang terakhir mengubah suatu baris dalam proyek Git lokal di Mac Anda, buka Terminal, masuk ke repositori, dan jalankan git blame pada file tersebut dengan rentang nomor baris. Kemudian periksa commit tersebut dengan git show untuk membaca pesan dan diff-nya. Blame mengidentifikasi perubahan terakhir pada baris saat ini; ini tidak selalu mengungkap kapan baris tersebut pertama kali muncul atau mengapa baris itu ditulis.

1. Buka repositori di Terminal

Jika Anda sudah membuka proyek tersebut di Finder, buka Terminal dan ketik cd , lalu seret folder proyek ke dalam jendela Terminal dan tekan Return. macOS akan memasukkan jalur folder tersebut; hal ini mencegah salah ketik. Atau, masukkan sendiri jalurnya dan beri tanda kutip jika memuat spasi, misalnya:

cd "/Users/sam/Projects/My App"

Pastikan Anda berada di dalam working tree Git dan Git tersedia:

git status --short
git --version

Jika perintah pertama melaporkan bahwa direktori saat ini bukan repositori Git, navigasikan ke direktori repositori proyek yang sebenarnya. Jika git tidak tersedia, pasang atau aktifkan Git melalui penyiapan yang Anda percayai sebelum melanjutkan. Perintah-perintah di bawah ini menggunakan sintaksis shell standar dan berfungsi di shell default macOS Terminal serta shell umum lainnya.

2. Jalankan blame untuk baris yang Anda perlukan

Temukan nomor baris di editor Anda, lalu gantikan jalur file dan nomor baris di bawah ini. Jalur tersebut bersifat relatif terhadap direktori utama (root) repositori; gunakan tanda kutip jika memuat spasi atau metakarakter shell.

git blame -L 42,42 -- "Sources/Settings.swift"

-L 42,42 membatasi anotasi ke baris 42. Git menghitung baris mulai dari 1. Untuk memeriksa konteks di sekitarnya, gunakan rentang seperti -L 38,46. Git mencetak pengidentifikasi commit, detail pembuat (author), informasi tanggal, dan teks baris tersebut. Dokumentasinya mendeskripsikan blame sebagai fitur yang menampilkan revisi dan pembuat yang terakhir memodifikasi setiap baris, serta mendukung pemilihan rentang baris dengan -L. Dokumentasi Git blame

Jika Anda tidak mengetahui nomor barisnya, buka file tersebut di editor Anda dan gunakan nomor baris yang ditampilkan. Anda juga dapat melakukan blame ke seluruh file dengan tidak menyertakan -L:

git blame -- "Sources/Settings.swift"

Bila Anda tidak berada di direktori utama repositori, gunakan jalur yang relatif terhadap direktori tempat Anda menjalankan perintah tersebut. Jika Git menyatakan bahwa jalur tersebut tidak ada, periksa direktori Anda saat ini (pwd) serta kapitalisasi dan ejaan jalur yang tepat.

3. Baca commit yang diidentifikasi oleh blame

Salin pengidentifikasi commit yang ditampilkan untuk baris target dan teruskan ke git show:

git show --format=fuller --stat a1b2c3d

Ganti a1b2c3d dengan pengidentifikasi dari output Anda. Ini akan menampilkan metadata commit dan ringkasan file. Untuk membaca patch-nya juga, abaikan --stat:

git show --format=fuller a1b2c3d

Perhatikan baris-baris yang diubah di sekitar baris target, pesan commit, dan file lain yang diubah dalam commit yang sama. Detail ini dapat membantu menjelaskan konteks perubahan tersebut. Pesan commit mencatat apa yang ditulis oleh pembuatnya; ini bukanlah bukti dari alasan desain. Git mendokumentasikan git show sebagai fitur untuk menampilkan informasi commit dan diff tekstualnya. Dokumentasi Git show

Saat blame mengarah ke commit pemformatan atau pemindahan

Suatu baris mungkin terkena dampak dari pemformatan massal, penggantian nama, atau pemindahan kode. Dalam kasus tersebut, commit yang teridentifikasi oleh blame mungkin bukan commit yang awalnya memperkenalkan logika tersebut. Cobalah deteksi pemindahan dan penyalinan:

git blame -M -C -L 42,42 -- "Sources/Settings.swift"

-M meminta Git untuk mendeteksi baris yang dipindahkan dalam suatu file, sedangkan -C juga mencari baris yang disalin atau dipindahkan dari file lain. Opsi ini membantu Git melacak beberapa refaktor, tetapi deteksi bergantung pada kecocokan konten dan mungkin tidak dapat menyelesaikan setiap riwayat. Dokumentasi Git blame

Jika repositori memiliki file .git-blame-ignore-revs untuk perubahan berskala luas seperti pemformatan, Anda dapat meminta Git untuk menggunakannya:

git blame --ignore-revs-file .git-blame-ignore-revs -L 42,42 -- "Sources/Settings.swift"

Hal ini dapat membuat perubahan yang relevan lebih mudah ditemukan, tetapi revisi yang diabaikan memengaruhi anotasi; periksa file pengabaian milik repositori atau bandingkan dengan eksekusi blame tanpa opsi tersebut jika hasilnya dirasa tidak biasa. Dokumentasi Git mencantumkan opsi ini, dan GitHub mendokumentasikan konvensi file ignore-revisions yang sama. Dokumentasi Git blame

Apa yang tidak dapat diberitahukan oleh blame

Blame memberikan anotasi pada baris yang ada di versi file yang dipilih. Perintah ini tidak menampilkan baris yang dihapus atau diganti secara langsung, dan commit pengubah terbaru bisa berbeda dari kemunculan pertamanya. Untuk teks yang dihapus atau status file sebelumnya, periksa diff commit dan riwayatnya; dokumentasi blame dari Git mengarahkan ke git diff dan pencarian riwayat untuk perubahan yang menghapus atau mengganti konten. Dokumentasi Git blame

Jika repositori di-host di GitHub dan Anda memiliki akses ke repositori tersebut, Anda juga dapat membuka file tersebut dan memilih Blame untuk melihat riwayat baris demi baris di browser. Klik pesan commit untuk memeriksa perubahan tersebut, atau gunakan kontrol versi untuk melihat file sebelum perubahan itu dilakukan. GitHub Docs: Melihat dan memahami file

Sumber