Untuk melihat perbedaan file yang terlacak dengan versi sebelumnya di repositori Git pada Mac Anda, buka Terminal, berpindahlah ke repositori, dan jalankan git diff REVISION -- path/to/file. Ganti REVISION dengan commit seperti HEAD~1 dan path dengan jalur file yang relatif terhadap repositori. Ini membandingkan versi yang di-commit tersebut dengan file sebagaimana adanya di working tree Anda saat ini; perintah ini tidak mengubah file.
Buka Terminal di Repositori
Di Finder, temukan folder repositori. Buka Terminal, ketik cd dengan spasi di akhir, seret folder repositori ke jendela Terminal, lalu tekan Return. Apple mendokumentasikan tindakan menyeret item ke Terminal sebagai cara untuk menentukan jalur file dan folder. Pastikan Anda berada di working tree Git dengan:
git status
Jika Git melaporkan bahwa direktori saat ini bukanlah repositori, berpindahlah ke folder tingkat teratas repositori dan coba lagi. Terminal menggunakan zsh secara default di macOS, menurut Apple. Perintah di bawah ini berfungsi di shell tersebut; perintah tersebut menggunakan tanda kutip pada jalur sehingga spasi dalam nama tetap dipertahankan.
Bandingkan File Saat Ini dengan Revisi Sebelumnya
Gunakan format ini:
git diff REVISION -- "path/to/file"
Sebagai contoh, untuk membandingkan file Sources/Menu.swift saat ini dengan versinya satu commit first-parent sebelum HEAD saat ini, jalankan:
git diff 'HEAD~1' -- "Sources/Menu.swift"
Tanda -- menandai akhir dari argumen revisi serta opsi dan awal dari jalur. Git mendokumentasikan format ini untuk membandingkan working tree dengan commit yang disebutkan. Pada output, baris yang diawali dengan tanda - berasal dari versi sebelumnya, baris + berasal dari file saat ini, dan baris di sekitarnya yang tidak bertanda memberikan konteks. Dokumentasi Git diff
HEAD~1 berarti induk pertama (first parent) dari commit saat ini; HEAD~2 mengikuti dua langkah first-parent. Ini praktis untuk riwayat terbaru, tetapi mungkin tidak menunjukkan perubahan tepat yang Anda maksudkan, terutama di sekitar proses merge. Sintaks revisi Git juga menerima nama branch, tag, dan ID commit. Gunakan commit yang telah Anda tentukan saat Anda membutuhkan titik riwayat tertentu. Sintaks revisi Git
Untuk menemukan commit yang mengubah file tersebut, periksa riwayatnya:
git log --oneline -- "Sources/Menu.swift"
Salin ID commit yang relevan dari output, lalu gunakan dalam perintah diff:
git diff 4f2a9c1 -- "Sources/Menu.swift"
Ganti 4f2a9c1 dengan ID sebenarnya yang ditampilkan di repositori Anda. Git menerima singkatan ID commit yang tidak ambigu; jika ambigu atau tidak valid, gunakan ID yang lebih panjang atau nama revisi lainnya.
Pilih Perbandingan yang Sesuai dengan Kebutuhan Anda
Perbandingan working-tree mencakup setiap pengeditan terkini pada file, baik yang staged maupun unstaged. Jika Anda justru ingin membandingkan dua versi yang sudah di-commit, sertakan kedua revisi:
git diff OLD_REV NEW_REV -- "Sources/Menu.swift"
Sebagai contoh, git diff 'HEAD~3' HEAD -- "Sources/Menu.swift" membandingkan file ter-commit tiga langkah first-parent sebelumnya dengan versi pada commit saat ini. Ini tidak menyertakan pengeditan yang belum di-commit. Git mendeskripsikan format dua-commit ini sebagai perbandingan dua commit arbitrer. Dokumentasi Git diff
Jika Anda ingin membandingkannya dengan versi yang di-stage untuk commit berikutnya, format --cached Git membandingkan index dengan commit. Sebagai contoh:
git diff --cached HEAD -- "Sources/Menu.swift"
Itu menjawab pertanyaan yang berbeda dari membandingkan file kerja saat ini: format ini menunjukkan perubahan yang di-stage relatif terhadap HEAD.
Memahami Output Kosong dan Kesalahan Umum
Tidak adanya output diff biasanya berarti Git tidak menemukan perbedaan untuk jalur tersebut antara revisi yang dipilih dan status saat ini yang dipilih. Pastikan ejaan dan huruf besar-kecil pada jalur sudah benar, dan pastikan Anda berada di dalam repositori yang tepat. Jika Git menyatakan bahwa jalur tidak diketahui pada revisi tersebut, file itu mungkin belum ada saat itu, atau jalurnya telah berubah. Untuk memeriksa file yang telah diubah namanya atau dihapus, gunakan jalur historisnya dan periksa daftar file atau log commit yang relevan.
File yang belum pernah dilacak oleh Git tidak memiliki versi ter-commit untuk dibandingkan. Selain itu, diff teks standar Git mungkin tidak menyediakan perbandingan baris demi baris yang mudah dibaca untuk file biner. Perintah ini hanya menampilkan perubahan; ini tidak memulihkan versi lama. Hindari git checkout atau git restore jika tujuan Anda hanya untuk memeriksa, karena perintah-perintah tersebut memiliki dampak yang berbeda pada file.
Untuk tinjauan yang lebih ringkas, tambahkan jumlah konteks yang kecil, seperti git diff -U1 'HEAD~1' -- "Sources/Menu.swift". Opsi -U pada Git mengatur berapa banyak baris konteks di sekitarnya yang ditampilkan. Setelah Anda memiliki revisi dan jalur yang diinginkan, perintah ini menyediakan tampilan yang langsung dan dapat diulang mengenai apa yang berbeda tanpa mengubah file Anda sama sekali.
Sumber
Mengubah shell default di Terminal di Mac — Dukungan Apple
Menyeret item ke Jendela Terminal — Dukungan Apple