Di tutorial sebelumnya, kita telah belajar menggunakan git log untuk melihat riwayat commit. git log -p bahkan bisa menunjukkan perubahan yang terjadi di dalam setiap commit. Namun, bagaimana jika Anda ingin melihat perubahan yang belum di-commit?
Inilah fungsi utama dari git diff. Perintah ini adalah alat analisis Anda untuk membandingkan berbagai versi file. git diff memungkinkan Anda untuk melihat dengan tepat baris mana yang telah Anda tambah, ubah, atau hapus sebelum Anda menyimpannya ke dalam riwayat. Ini adalah langkah krusial untuk memastikan commit Anda bersih dan hanya berisi perubahan yang relevan.
Memahami Apa yang Dibandingkan
git diff adalah perintah yang serbaguna. Kegunaannya berubah tergantung pada apa yang ingin Anda bandingkan. Mari kita lihat tiga skenario paling umum.
Skenario 1: Perubahan di Working Directory (git diff)
Ini adalah penggunaan git diff yang paling umum. Ketika dijalankan tanpa argumen tambahan, perintah ini akan membandingkan file di Working Directory Anda dengan file yang ada di Staging Area.
Dengan kata lain, ini menjawab pertanyaan: “Perubahan apa saja yang sudah saya buat tetapi belum saya git add?”
Mari kita praktikkan.
- Buka file
index.htmldari proyek Anda. - Ubah isi dari tag
<h1>. Misalnya, dari<h1>Halo Dunia!</h1>menjadi<h1>Selamat Datang di Git!</h1>. Simpan file tersebut. - Sekarang, jalankan
git diffdi terminal Anda:
git diff
Outputnya akan terlihat seperti ini:
diff --git a/index.html b/index.html
index 73b7a2d..9035201 100644
--- a/index.html
+++ b/index.html
@@ -5,6 +5,6 @@
<title>Proyek Git Saya</title>
</head>
<body>
- <h1>Halo Dunia!</h1>
+ <h1>Selamat Datang di Git!</h1>
</body>
</html>
Mari kita bedah outputnya:
--- a/index.html: Ini merepresentasikan versi file “sebelum” diubah (versi di Staging Area).+++ b/index.html: Ini merepresentasikan versi file “sesudah” diubah (versi di Working Directory).- <h1>Halo Dunia!</h1>: Baris yang diawali tanda-adalah baris yang dihapus.+ <h1>Selamat Datang di Git!</h1>: Baris yang diawali tanda+adalah baris yang ditambahkan.
Skenario 2: Perubahan di Staging Area (git diff --staged)
Sekarang, mari kita tambahkan perubahan tadi ke Staging Area.
git add index.html
Jika Anda menjalankan git diff lagi, tidak akan ada output apa pun. Mengapa? Karena sekarang kondisi Working Directory Anda sudah sama persis dengan Staging Area.
Untuk melihat perbedaan antara file di Staging Area dengan commit terakhir di Repository, gunakan opsi --staged (atau --cached).
Ini menjawab pertanyaan: “Perubahan apa saja yang sudah saya git add tetapi belum saya git commit?”
git diff --staged
Outputnya akan sama persis seperti git diff yang kita jalankan sebelumnya, karena sekarang perbandingan dilakukan antara Staging Area (yang berisi perubahan baru) dan commit terakhir (yang berisi “Halo Dunia!”).
Skenario 3: Membandingkan Dua Commit (git diff <commit1> <commit2>)
git diff juga sangat berguna untuk membandingkan dua titik mana pun dalam riwayat proyek Anda. Ini sangat membantu untuk melihat semua perubahan yang terjadi untuk sebuah fitur atau dalam rentang waktu tertentu.
- Pertama, mari kita commit perubahan judul kita:
Bash
git commit -m "Mengubah judul halaman utama" - Selanjutnya, jalankan
git log --onelineuntuk melihat daftar commit Anda.f4e8b3e (HEAD -> master) Mengubah judul halaman utama a84f7e5 Menambahkan file CSS untuk styling 9a7e3a3 Membuat file HTML dasar sebagai awal proyek - Sekarang, mari kita bandingkan commit pertama (
9a7e3a3) dengan commit terbaru (f4e8b3e). Salin hash dari kedua commit tersebut dan jalankangit diff.Bashgit diff 9a7e3a3 f4e8b3e
Perintah ini akan menampilkan semua perubahan yang terjadi di antara dua titik sejarah tersebut, termasuk penambahan file CSS dan perubahan judul.
Kesimpulan
Gunakan git diff sebagai alat verifikasi sebelum git commit. Ini adalah jaring pengaman Anda untuk memastikan Anda tahu persis apa yang akan Anda simpan ke dalam riwayat.
git diff: Melihat perubahan yang belum di-stage.git diff --staged: Melihat perubahan yang sudah di-stage tetapi belum di-commit.git diff <commit1> <commit2>: Melihat perubahan kumulatif antara dua commit.
Pada tutorial berikutnya, kita akan menyelami salah satu konsep paling transformatif dalam Git yang memungkinkan kerja tim yang efisien: Branching.