Saya pikir pertanyaan ini (dari judul) mungkin tentang menggunakan git diff pada dua file yang belum tentu ada di repo. Saya menemukan bahwa flag --no-index adalah untuk itu, misalnya git diff --no-index --word-diff old_file.txt new_file.txt(--word-diff menyoroti perubahan berdasarkan kata, bukan hanya baris, yang sangat berguna untuk teks panjang).
Saya ingin menyebutkan, bahwa Anda dapat membandingkan dua file menggunakan git diff <path> <path>bahkan jika mereka tidak ada dalam repositori git.
mitenka
1
@mitenka Saya rasa itu tidak benar. Jika Anda perhatikan, git diff --helpAnda akan melihat bahwa satu-satunya pola yang didukung untuk dua file adalah git diff [<options>] --no-index [--] <path> <path>. git diff a bhanya cocok dengan pola komit, bukan file.
Doug
@Doug Berikut adalah kutipan dari perintah bantuan yang Anda sebutkan, git-scm.com/docs/git-diff : Tampilkan [...] perubahan antara dua file pada disk.
mitenka
@mitenka bantuan mengatakan, kecuali jika Anda menggunakan '--no-index' itu tidak membandingkan file; komentar Anda harus menjadi jawaban terpisah; itu tidak benar dan tidak relevan dengan jawaban ini.
Doug
1
@Doug Terima kasih atas pendapat Anda. Berikut kutipan dari bantuan yang Anda rujuk: Anda dapat menghilangkan --no-indexopsi saat menjalankan perintah di pohon kerja yang dikendalikan oleh Git dan setidaknya salah satu titik jalur di luar pohon kerja, atau saat menjalankan perintah di luar pohon kerja yang dikendalikan oleh Git .
mitenka
78
Saya yakin menggunakan --no-indexadalah apa yang Anda cari:
git diff [<options>]--no-index [--]<path><path>
seperti yang disebutkan di manual git:
Formulir ini untuk membandingkan dua jalur yang diberikan pada sistem file. Anda dapat
menghilangkan satu --no-indexpilihan ketika menjalankan perintah di pohon bekerja dikendalikan oleh Git dan setidaknya salah satu jalur poin di luar pohon bekerja, atau ketika menjalankan perintah luar pohon bekerja dikendalikan oleh Git.
@swe ini jelas merupakan jawaban yang berguna, tetapi OP secara khusus menyatakan file tersebut dalam HEAD, yang berarti ada dalam indeks git. Jawaban yang diterima langsung menjawab pertanyaan itu. Juga jawaban yang diterima memiliki awal 6 tahun;)
Michael Delgado
3
Ini mungkin tidak membantu OP, tapi itulah yang saya cari.
thislooksfun
Ini menjawab pertanyaan yang diposting oleh judul, jika Anda merunduk untuk ini di web.
Merlin
3
Jika Anda menggunakan tortoise git, Anda dapat mengklik kanan pada file dan melakukan git a diff dengan: Klik kanan pada file pertama dan melalui submenu tortoisegit pilih "Diff later" Kemudian pada file kedua Anda juga dapat mengklik kanan ini , buka submenu tortoisegit lalu pilih "Diff dengan namafilandadi sini.txt"
Menggunakan PhpStorm, saya hanya menyalin kode komit prev dan membandingkannya dengan versi saat ini menggunakan alat "bandingkan dengan clipboard" bawaan.
PhpStorm adalah IDE komersial. Pertanyaan ini adalah tentang bagaimana melakukan ini di dalam git cli itu sendiri, tanpa praduga perangkat lunak tambahan.
git diff --no-index --word-diff old_file.txt new_file.txt
(--word-diff menyoroti perubahan berdasarkan kata, bukan hanya baris, yang sangat berguna untuk teks panjang).Jawaban:
Tentukan jalur secara eksplisit:
git diff HEAD:full/path/to/foo full/path/to/bar
Lihat
--find-renames
opsi digit-diff
dokumen .Kredit: twaggs .
sumber
git diff <path> <path>
bahkan jika mereka tidak ada dalam repositori git.git diff --help
Anda akan melihat bahwa satu-satunya pola yang didukung untuk dua file adalahgit diff [<options>] --no-index [--] <path> <path>
.git diff a b
hanya cocok dengan pola komit, bukan file.--no-index
opsi saat menjalankan perintah di pohon kerja yang dikendalikan oleh Git dan setidaknya salah satu titik jalur di luar pohon kerja, atau saat menjalankan perintah di luar pohon kerja yang dikendalikan oleh Git .Saya yakin menggunakan
--no-index
adalah apa yang Anda cari:seperti yang disebutkan di manual git:
sumber
Jika Anda menggunakan tortoise git, Anda dapat mengklik kanan pada file dan melakukan git a diff dengan: Klik kanan pada file pertama dan melalui submenu tortoisegit pilih "Diff later" Kemudian pada file kedua Anda juga dapat mengklik kanan ini , buka submenu tortoisegit lalu pilih "Diff dengan namafilandadi sini.txt"
sumber
Menggunakan PhpStorm, saya hanya menyalin kode komit prev dan membandingkannya dengan versi saat ini menggunakan alat "bandingkan dengan clipboard" bawaan.
sumber