Bagaimana saya bisa membedakan file, katakanlah pom.xml
, dari cabang master ke versi lama yang sewenang-wenang di Git?
324
Anda dapat melakukan:
git diff master~20:pom.xml pom.xml
... untuk membandingkan arus Anda pom.xml
dengan yang dari master
20 revisi yang lalu melalui induk pertama. Anda dapat mengganti master~20
, tentu saja, dengan nama objek (SHA1sum) dari komit atau salah satu dari banyak cara lain untuk menentukan revisi .
Perhatikan bahwa ini sebenarnya membandingkan yang lama pom.xml
dengan versi di pohon kerja Anda, bukan versi yang dilakukan master
. Jika Anda menginginkannya, maka Anda dapat melakukan yang berikut:
git diff master~20:pom.xml master:pom.xml
git diff <revision>:foo/ HEAD:foo/
.Sebagai contoh:
sumber
git diff <revision> root/path/file
.Jika Anda ingin melihat perbedaan antara komit terakhir dari satu file yang dapat Anda lakukan:
Ini akan memberi Anda perbedaan file di git, tidak membandingkan file lokal Anda.
sumber
-1
langkah demi langkah sampai Anda mendapatkan perubahan.gitlog () { git log -${3:-p} -${2:-1} $1; }
Digunakan seperti:gitlog Rakefile
ataugitlog Rakefile 5
dangitlog Rakefile 10 s
. Yang pertama menunjukkan satu perbedaan; yang kedua menunjukkan lima perbedaan; yang ketiga menunjukkan sepuluh--no-patch
.Untuk melihat apa yang diubah dalam file di komit terakhir:
Anda dapat mengubah angka (~ 1) menjadi komis ke-n yang ingin Anda bedakan.
sumber
HEAD~1
diganti<revision>
, yang membuat jawaban ini duplikat.Sintaksis Generik:
untuk semua file bernama "FileName.xml" di mana saja di repo Anda.
Perhatikan jarak antara "-" dan "**"
Jawab untuk pertanyaan Anda:
seperti biasa dengan git, Anda dapat menggunakan tag / sha1 / "HEAD ^" untuk id komit.
Diuji dengan git 1.9.1 di Ubuntu.
sumber
Jika tidak ada komit yang menjadi HEAD Anda maka ekspansi brace bash terbukti sangat berguna, terutama jika nama file Anda panjang, contoh di atas:
Akan menjadi
Lebih lanjut tentang ekspansi Brace dengan bash.
sumber
Untuk membandingkan hingga 5 komit dengan yang sekarang, keduanya aktif
master
, cukup lakukan:Anda juga dapat merujuk ke komit nomor hash, misalnya jika nomor hash adalah
x110bd64
, Anda dapat melakukan sesuatu seperti ini untuk melihat perbedaannya:sumber
git diff -w HEAD origin / jalur master / ke / file
sumber
Berfungsi jika Anda tidak berada di cabang master juga.
sumber
Jika Anda baik-baik saja menggunakan alat grafis (atau bahkan lebih suka) Anda dapat:
Di gitk Anda kemudian dapat mengklik komit apa saja (untuk "memilih" itu) dan klik kanan komit lain untuk memilih "Diff this -> terpilih" atau "Diff terpilih -> ini" di menu sembulan, tergantung pada urutan apa yang Anda inginkan.
sumber
Untuk orang yang tertarik melakukan hal yang sama dari GitHub, lihat membandingkan komitmen di seluruh waktu .
sumber
Jika Anda perlu melakukan diff pada satu file dalam simpanan misalnya, Anda dapat melakukannya
sumber
Jika Anda mencari diff pada komit tertentu dan Anda ingin menggunakan UI github alih-alih baris perintah (katakanlah Anda ingin menautkannya ke orang lain), Anda dapat melakukan:
Sebagai contoh:
https://github.com/grails/grails-core/commit/02942c5b4d832b856fbc04c186f1d02416895a7e/grails-test-suite-uber/build.gradle
Perhatikan tautan Sebelumnya dan Berikutnya di kanan atas yang memungkinkan Anda menavigasi semua file dalam komit.
Ini hanya bekerja untuk komit tertentu, bukan untuk membandingkan antara dua versi sewenang-wenang.
sumber